【问题标题】:R - Efficient way to apply function on all features grouped using plyrR - 对使用 plyr 分组的所有功能应用功能的有效方法
【发布时间】:2018-03-22 03:56:15
【问题描述】:

df成为我们的测试数据框:

set.seed(1)
df <- data.frame(id = c(1,1,2,2,3,3,3),
                 var1 = round(runif(7)),
                 var2 = round(runif(7)),
                 var3 = round(runif(7)))
df

  id var1 var2 var3
1  1    0    1    1
2  1    0    1    0
3  2    1    0    1
4  2    1    0    1
5  3    0    0    0
6  3    1    1    1
7  3    1    0    1

我想总结一下 id 并将所有值总结如下:

df %>% 
  group_by(id) %>% 
  summarise(sum_var_1 = sum(var1),
            sum_var_2 = sum(var2),
            sum_var_3 = sum(var3)) %>% 
  data.frame

  id sum_var_1 sum_var_2 sum_var_3
1  1         0         2         1
2  2         2         0         2
3  3         2         1         2

现在的问题是:有没有办法避免sum_var_2 = sum(var2) [...] 步骤,并在summarise 内使用类似公式的东西在功能上执行它?我想总结数百个功能!

任何帮助将不胜感激!

【问题讨论】:

    标签: r dplyr plyr


    【解决方案1】:

    因为所有变量都以“var”开头,所以您可以这样做

    df %>% 
       group_by(id) %>% 
       summarise_at(vars(starts_with("var")), sum)
    

    返回你的例子。

    编辑:正如@jake-kaupp 评论的那样,summarise_all 做得更好,也不需要对变量名进行规范化:

    df %>% 
       group_by(id) %>% 
       summarise_all(sum)
    

    【讨论】:

    • 您也可以使用summarise_all,它将汇总除分组变量之外的所有内容。
    猜你喜欢
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2017-01-23
    • 2015-01-12
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多