在R中的因子中应用一长串标签

问题描述 投票:0回答:1

通常,当我想给一个因子贴标签时,我会使用 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$PAVEUNdf2$ENGLISH 而不需要手动添加?

r label
1个回答
0
投票

对于带标签的变量,下面的代码应该可以做到。

apply_labels(df,
                paven=setNames(df2$CODE, df2$ENGLISH),

                ...)

一般来说,标签变量和因子是不同的东西。 因子的代码会是这样的。

df$paven_factor = factor(df$paven, levels = df2$CODE, labels = df2$ENGLISH) 

1
投票

I think levels(df$PAVEUN) <- df2$ENGLISH) 将会达到你想要的效果。然而,你要确保各层级的顺序正确无误......如果下面的 df2$CODE 吻合 df$PAVEUN 你可能想用 merge() (从基数R)或其中一个 *_join() tidyverse中的函数,要更加小心。

© www.soinside.com 2019 - 2024. All rights reserved.