0

我试图不纠缠于循环和复杂的代码中,这些代码比简单地重复代码行需要更长的时间才能正确完成。

我想对 R 中的多个变量进行以下重新编码。我连​​接了变量,但它们并没有改变原始数据文件的内容。

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

重复... d$var2_d$var20

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

非常感谢。

4

2 回答 2

0

如果您的所有变量都在同一个数据框中,您可以编辑var1:var3var1:var999重新编码所有变量。

dplyr

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

如果您有var1:var3多个数据框或列表,则可以创建一个函数,例如:

recode_func <- function(x) {

df <- df %>%
  mutate_at(vars(x), .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
于 2020-05-12T17:20:10.713 回答
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
于 2020-05-12T17:15:27.977 回答