2014-09-24 95 views
0

我有看起来像这样的一个数据帧:总和行每个唯一的值

> 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 

我要总结xy,并且z每个唯一的dateday变量。它应该看起来像这样:

  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 

请帮忙吗?非常感谢!!

+0

我相信你可以使用'ave()'命令,但是你能够尝试什么? – 2014-09-24 13:05:45

+0

你显示的内容看起来更像是'matrix'的打印输出,而不是'data.frame'。你看过'聚合'吗? – A5C1D2H2I1M1N2O1R2T1 2014-09-24 13:06:02

+0

@AnandaMahto禁止其数据框。我把'[]'我自己 – maryam 2014-09-24 13:08:34

回答

1

有几种方法可以做到这一点(以及许多答案)关于如何做到这一点。

这里有三种常用的方法,一种使用“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

-1

尝试连接“日期”和“日”的人造色谱柱。

相关问题