2014-09-24 100 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

嘗試連接「日期」和「日」的人造色譜柱。