通常,当我想给一个因子贴标签时,我会使用 apply_labels
功能从 expss
我手动添加所有的标签,像这样。
apply_labels(df,
var1=c("label1"=1,"label2"=2,"label3"=3),
var2=c("label4"=1,...),
...)
但在我目前的情况下,我有一个未贴标签的因子。df$PAVEUN
有417个可能的值。在另一张表(df2
),我的所有唯一值都有对应的标签(df2$ENGLISH
). 这个数据框架的概述如下。
> head(df2)
CODE ENGLISH
1 1 Managers
2 11 Chief executives, senior officials and legislators
3 111 Legislators and senior officials
4 1111 Legislators
5 1112 Senior government officials
6 1113 Traditional chiefs and heads of village
我怎样才能给 df$PAVEUN
与 df2$ENGLISH
而不需要手动添加?
对于带标签的变量,下面的代码应该可以做到。
apply_labels(df,
paven=setNames(df2$CODE, df2$ENGLISH),
...)
一般来说,标签变量和因子是不同的东西。 因子的代码会是这样的。
df$paven_factor = factor(df$paven, levels = df2$CODE, labels = df2$ENGLISH)
I think levels(df$PAVEUN) <- df2$ENGLISH)
将会达到你想要的效果。然而,你要确保各层级的顺序正确无误......如果下面的 df2$CODE
吻合 df$PAVEUN
你可能想用 merge()
(从基数R)或其中一个 *_join()
tidyverse中的函数,要更加小心。