如何解决如何使用dplyr跨R中的多个列进行聚合
我有以下数据框:
data = data.frame(store=c('A','A','B','B'),prod_id=c('p1','p1','p2','p2'),Date=c('2017-01-01','2017-01-01','2017-01-02','2017-01-02'),sales=c('12','13','15','10','12','9','8','7','11','1','5','6','4','5'))
data
store prod_id Date sales
1 A p1 2017-01-01 12
2 A p1 2017-01-01 13
3 A p2 2017-01-01 15
4 A p2 2017-01-01 10
5 A p2 2017-01-01 12
6 A p1 2017-01-02 9
7 A p1 2017-01-02 12
8 A p1 2017-01-02 8
9 A p2 2017-01-02 7
10 A p2 2017-01-02 11
11 B p1 2017-01-01 10
12 B p1 2017-01-01 1
13 B p1 2017-01-01 5
14 B p2 2017-01-01 9
15 B p2 2017-01-01 6
16 B p2 2017-01-01 7
17 B p1 2017-01-02 1
18 B p1 2017-01-02 4
19 B p2 2017-01-02 1
20 B p2 2017-01-02 5
我想汇总store-prod_id-Date中的销售额以获取汇总数据,如下所示:
>data_aggregate
store prod_id Date sales
1 A p1 2017-01-01 15
2 A p2 2017-01-01 37
3 A p1 2017-01-02 29
4 A p2 2017-01-02 18
5 B p1 2017-01-01 16
6 B p2 2017-01-01 22
7 B p1 2017-01-02 5
8 B p2 2017-01-02 6
如何使用dplyr或R中的任何其他聚合方法来实现上述聚合?
解决方法
使用aggregate
,如下所示?
> aggregate(cbind(sales = as.numeric(sales))~.,data,sum)
store prod_id Date sales
1 A p1 2017-01-01 25
2 B p1 2017-01-01 16
3 A p2 2017-01-01 37
4 B p2 2017-01-01 22
5 A p1 2017-01-02 29
6 B p1 2017-01-02 5
7 A p2 2017-01-02 18
8 B p2 2017-01-02 6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。