dplyr 总结嵌套 group_by [重复]

Posted

技术标签:

【中文标题】dplyr 总结嵌套 group_by [重复]【英文标题】:dplyr summarise over nested group_by [duplicate] 【发布时间】:2015-09-19 14:20:27 【问题描述】:

我有一个这样的数据框:

       Date Amount Category
1  02.07.15      1        1
2  02.07.15      2        1
3  02.07.15      3        1
4  02.07.15      4        2
5  03.07.15      5        2
6  04.07.15      6        3
7  05.07.15      7        3
8  06.07.15      8        3
9  07.07.15      9        4
10 08.07.15     10        5
11 09.07.15     11        6
12 10.07.15     12        4
13 11.07.15     13        4
14 12.07.15     14        5
15 13.07.15     15        5
16 14.07.15     16        6
17 15.07.15     17        6
18 16.07.15     18        5
19 17.07.15     19        4

我想计算一个类别中每一天的金额总和。我的尝试(见代码)都不够。

summarise(group_by(testData, Category), sum(Amount))

错误的输出 --> 这里是对每个组计算总和

  Category sum(Amount)
1        1           6
2        2           9
3        3          21
4        4          53
5        5          57
6        6          44

summarise(group_by(testData, Date), sum(Amount), categories = toString(Category))

错误的输出 --> 这里每天计算总和,但不考虑类别

       Date sum(Amount) categories
1  02.07.15          10 1, 1, 1, 2
2  03.07.15           5          2
3  04.07.15           6          3
4  05.07.15           7          3
5  06.07.15           8          3
6  07.07.15           9          4
7  08.07.15          10          5
8  09.07.15          11          6
9  10.07.15          12          4
10 11.07.15          13          4
11 12.07.15          14          5
12 13.07.15          15          5
13 14.07.15          16          6
14 15.07.15          17          6
15 16.07.15          18          5
16 17.07.15          19          4

到目前为止,我还没有成功地结合这两种说法。 如何嵌套两个 group_by 语句来计算每个类别中每一天的金额总和?

嵌套如下组:

summarise(group_by(group_by(testData, Date), Category), sum(Amount), dates = toString(Date))

   Category sum(Amount)                                  dates
1        1           6           02.07.15, 02.07.15, 02.07.15
2        2           9                     02.07.15, 03.07.15
3        3          21           04.07.15, 05.07.15, 06.07.15
4        4          53 07.07.15, 10.07.15, 11.07.15, 17.07.15
5        5          57 08.07.15, 12.07.15, 13.07.15, 16.07.15
6        6          44           09.07.15, 14.07.15, 15.07.15

没有按预期工作。

我听说过dplyr - summarise weighted datasummarise_each,但无法让它发挥作用:

summarise_each(testData, funs(Category))
Error could not find function Category

【问题讨论】:

非常感谢您的评论是解决方案 【参考方案1】:

你可以试试

 testData %>% 
       group_by(Date,Category) %>% 
       summarise(Amount= sum(Amount))

【讨论】:

以上是关于dplyr 总结嵌套 group_by [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 dplyr 中使用 group_by 时在 R 中格式化数字 [重复]

了解 dplyr 和 group_by

R语言dplyr包使用dplyr函数使用group_by函数summarise函数和mutate函数计算分组占比实战

使用 group_by(多个变量)时的 dplyr 问题

dplyr:在 group_by 之后汇总内部的管道

data.table 中的 dplyr::slice [重复]