使用自定义功能同时更改多个功能

时间:2019-02-05 02:46:40

标签: r dplyr

我已经在此找到了几篇SO帖子,但是看不到如何应用于我的特定问题。

我有一个数据框,它具有许多我想同时进行变异的功能。我要覆盖它们而不是创建新功能。

例如使用mtcars。假设我想将am,gear和carb修改为大于1的值,否则为0。对于这3个功能中的每一个。我该怎么办?

mtcars %>% mutate_at(vs:carb, funs(???))

我想应用ifelse(x > 0, 1, 0)形式的自定义函数,其中x是正在使用的3个功能之一。

我该如何实现?

1 个答案:

答案 0 :(得分:1)

您需要使用vars()进行vs:carb的解析,并使用.作为funs中参数的替代者:

mtcars %>% mutate_at(vars(vs:carb), funs(ifelse(. > 0, 1, 0)))
#     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
# 1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    1    1
# 2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    1    1
# 3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    1    1
# 4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    1    1
# 5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    1    1
# 6  18.1   6 225.0 105 2.76 3.460 20.22  1  0    1    1
# ...

?funs帮助页面中对此进行了说明:

  

指定的功能列表:

     
      
  • 他们的名字"mean"
  •   
  • 函数本身mean
  •   
  • .作为伪参数mean(., na.rm = TRUE)
  • 的函数调用   

与此对应的是第三个项目符号。