Как сохранить векторы как "помеченные" при слиянии кадров данных с помощью merge или left_join?

Я объединяю фреймы данных, один из которых помечен данными. Однако, когда кадры данных объединяются, помеченные векторы становятся числовыми. Как я мог предотвратить это?

В следующем примере показана проблема с mtcars:

library(haven)
library(dplyr)
df <- data.frame(am = c(0, 1),
                 var = c("X", "Y"))

mtcars$cyl <- labelled(mtcars$cyl, c("A" = 4, "B" = 6, "C" = 8))

class(mtcars$cyl)

Здесь mtcats $ cyl "помечен".

mtcars <- merge(mtcars, df, by.x = "am", by.y = "am", all.x = TRUE)
#OR
mtcars <- left_join(mtcars, df, by = c("am"="am"))

class(mtcars$cyl)

Тогда mtcars $ cyl становится "числовым". Я также заметил, что то же самое происходит, если вы вырезаете часть вектора, например, здесь:

x <- mtcars$cyl[2:6]
class(mtcars$cyl)

Здесь x тоже "числовое".

0 ответов

Другие вопросы по тегам