R - 在标记数据中将值永久更改为标签

R - changing values to labels permanently in labelled data

我曾与 havensjlabelled 合作,尝试使用 sav 文件中包含的数据标签。

下面是一些示例数据(真实数据要大得多,有更多的变量、值、标签等,并且所有值都出现了无数次):

library(sjlabelled)
col1 <- c("a", "b", "c")
col2 <- c(1, 2, 3)
df <- data.frame(col1, col2)
labels <- c("x", "y", "z")
df <- set_labels(df, col2, labels = labels)

我知道我可以使用 as_label 使用标签操作数据框,使用这些标签进行子集化等。但是,我想用标签替换值,因为一些 functions/processes 恢复了数据到值并完全删除标签。我无法确定何时会发生这种情况。

使用示例数据,我希望原始数据框最终如下所示,而不是定义新的数据框,只是用标签覆盖值:

col1 <- c("a", "b", "c")
col2 <- c("x", "y", "z") # these were the labels but are now the values
df <- data.frame(col1, col2)

我们可以使用get_labels

df$col2 <- get_labels(df$col2)[df$col2]

-输出

> df
  col1 col2
1    a    x
2    b    y
3    c    z