Как сохранить векторы как "помеченные" при слиянии кадров данных с помощью 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 тоже "числовое".