首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用dplyr将变量从数字转换为具有唯一级别的因子

如何使用dplyr将变量从数字转换为具有唯一级别的因子
EN

Stack Overflow用户
提问于 2018-07-28 04:35:52
回答 1查看 1.3K关注 0票数 3

我正在尝试使用因子级别的'codebook‘(格式化为命名列表的列表)将大量数值变量转换为因子变量。我可以使用mutate()recode_factor()逐一完成这项工作,但我希望使用mutate_at()一次性完成所有这些工作。我该怎么做呢?

codebook <- list(
  vs = list(`0` = 'V-shaped',
            `1` = 'straight'),
  am = list(`0` = 'automatic',
            `1` = 'manual')
)

mtcars %>%
  mutate(vs = recode_factor(vs, levels = !!!(pluck(codebook, 'vs'))))

mtcars %>%
  mutate_at(vars(names(codebook)),
            funs(recode_factor(., levels = !!!(pluck(codebook, 'somehow_pass_column_name_here?')))))
EN

回答 1

Stack Overflow用户

发布于 2018-07-28 05:26:43

您仍然可以对多个变量使用mutate,除非这就是您所说的逐个变量。我不太精通mutate_at,所以可能有人知道这种方法。

mtcars %>%
  mutate(vs = recode_factor(vs, levels = !!!(pluck(codebook, 'vs'))),
         am = recode_factor(am, levels = !!!(pluck(codebook, 'am'))))

    mpg cyl  disp  hp drat    wt  qsec       vs        am gear carb
1  21.0   6 160.0 110 3.90 2.620 16.46 V-shaped    manual    4    4
2  21.0   6 160.0 110 3.90 2.875 17.02 V-shaped    manual    4    4
3  22.8   4 108.0  93 3.85 2.320 18.61 straight    manual    4    1
4  21.4   6 258.0 110 3.08 3.215 19.44 straight automatic    3    1
5  18.7   8 360.0 175 3.15 3.440 17.02 V-shaped automatic    3    2
6  18.1   6 225.0 105 2.76 3.460 20.22 straight automatic    3    1
7  14.3   8 360.0 245 3.21 3.570 15.84 V-shaped automatic    3    4
8  24.4   4 146.7  62 3.69 3.190 20.00 straight automatic    4    2
9  22.8   4 140.8  95 3.92 3.150 22.90 straight automatic    4    2
10 19.2   6 167.6 123 3.92 3.440 18.30 straight automatic    4    4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51565208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档