首页 > 解决方案 > 如何在 R 中一次重新编码具有相同映射的多个变量?

问题描述

我正在努力寻找一种更简洁的方法来一次以更精简的方式重新编码(数字到数字)多个变量。有没有比下面这段代码更简单的方法?


mhomes_min <- mhomes %>% 
  mutate(contrib_private_3rd_party = recode(contrib_private_3rd_party,
     `1` = 1,
     `2` = 49,
     `3` = 100,
     `4` = 200,
     `5` = 500,
     `6` = 1000,
     `7` = 5000,
     `8` = 10000,
     `9` = 20000)) %>% 
  mutate(contrib_firm_3rd_party = recode(contrib_firm_3rd_party,
     `1` = 1,
     `2` = 49,
     `3` = 100,
     `4` = 200,
     `5` = 500,
     `6` = 1000,
     `7` = 5000,
     `8` = 10000,
     `9` = 20000)) %>% ...

标签: rdplyrmappingrecode

解决方案


我们可以使用mutatewith across,指定要输入的列名来recode修改across这些列

mhomes <- mhomes %>%
  mutate(across(c(contrib_private_3rd_party, contrib_firm_3rd_party), 
     ~ recode(., `1` = 1,
 `2` = 49,
 `3` = 100,
 `4` = 200,
 `5` = 500,
 `6` = 1000,
 `7` = 5000,
 `8` = 10000,
 `9` = 20000)))

推荐阅读