总和行每个唯一的值
问题描述:
我有看起来像这样的一个数据帧:总和行每个唯一的值
> df
date day x y z
[1] 2014-02-24 Thursday 100 83 39
[2] 2014-02-26 Wednessday 486 189 171
[3] 2014-02-26 Wednessday 426 427 428
[4] 2014-02-26 Wednessday 423 286 195
[5] 2014-02-27 Thursday 374 339 229
[6] 2014-02-27 Thursday 744 496 489
我要总结x
,y
,并且z
每个唯一的date
和day
变量。它应该看起来像这样:
date day x y z
[1] 2014-02-24 Thursday 100 83 39
[2] 2014-02-26 Wednessday 1335 902 794
[6] 2014-02-27 Thursday 1118 835 718
请帮忙吗?非常感谢!!
答
有几种方法可以做到这一点(以及许多答案)关于如何做到这一点。
这里有三种常用的方法,一种使用“data.table”,另一种使用“dplyr”。
aggregate(cbind(x, y, z) ~ date + day, mydf, sum)
# date day x y z
# 1 2014-02-24 Thursday 100 83 39
# 2 2014-02-27 Thursday 1118 835 718
# 3 2014-02-26 Wednessday 1335 902 794
library(data.table)
as.data.table(mydf)[, lapply(.SD, sum), by = list(date, day)]
# date day x y z
# 1: 2014-02-24 Thursday 100 83 39
# 2: 2014-02-26 Wednessday 1335 902 794
# 3: 2014-02-27 Thursday 1118 835 718
library(dplyr)
mydf %>% group_by(date, day) %>% summarise_each(funs(sum))
# Source: local data frame [3 x 5]
# Groups: date
#
# date day x y z
# 1 2014-02-24 Thursday 100 83 39
# 2 2014-02-26 Wednessday 1335 902 794
# 3 2014-02-27 Thursday 1118 835 718
+1
哇,你真了不起!谢谢阿南达。它完美的作品! – maryam 2014-09-24 13:25:26
答
尝试连接“日期”和“日”的人造色谱柱。
我相信你可以使用'ave()'命令,但是你能够尝试什么? – 2014-09-24 13:05:45
你显示的内容看起来更像是'matrix'的打印输出,而不是'data.frame'。你看过'聚合'吗? – A5C1D2H2I1M1N2O1R2T1 2014-09-24 13:06:02
@AnandaMahto禁止其数据框。我把'[]'我自己 – maryam 2014-09-24 13:08:34