R:如何一次对多个变量进行重新编码

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

这是一个非常基本的问题,因为我正努力避免陷入循环和复杂的代码中,而纠结比简单地重复代码行要花费更多的时间。

我想对R中的多个变量进行以下重新编码。我将变量串联在一起,但是它们没有更改原始数据文件的内容。

recode(d $ var1,“ 1 = 50; 2 = 70; 3 = 100; 4 = 140; 5 = 190”)

将d $ var2重复到d $ var20。...

如果最好利用编码时间将代码复制20次,请告诉我!

非常感谢。

r multiple-columns recode elementary
2个回答
0
投票

d = data.frame(var1 = c(1, 2, 3, 4, 5), 
               var2 = c(1, 2, 3, 4, 5), 
               var3 = c(1, 2, 3, 4, 5))

然后得到一个简单的apply,我们得到

A = apply(d, 
          2, 
         function(x) dplyr::recode(x, "1" = "50", "2" = "70", 
                                       "3" = "100" , "4" = "140", 
                                       "5" = "190")) %>% 
    as.data.frame(stringsAsFactors = FALSE)

输出

> A
  var1 var2 var3
1   50   50   50
2   70   70   70
3  100  100  100
4  140  140  140
5  190  190  190

0
投票

使用dplyr

A <- d %>%
  mutate_at(vars(var1:var3), .funs = list(
    ~case_when(
      . == 1 ~ 50,
      . == 2 ~ 70,
      . == 3 ~ 100,
      . == 4 ~ 140,
      . == 5 ~ 190
    )
  ))

给我们:

  var1 var2 var3
1   50   50   50
2   70   70   70
3  100  100  100
4  140  140  140
5  190  190  190
© www.soinside.com 2019 - 2024. All rights reserved.