Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 每个唯一值对的数据帧行总和_R_Sum_Dataframe_Aggregate - Fatal编程技术网

R 每个唯一值对的数据帧行总和

R 每个唯一值对的数据帧行总和,r,sum,dataframe,aggregate,R,Sum,Dataframe,Aggregate,我有一个数据框,看起来像这样: > 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

我有一个数据框,看起来像这样:

 > 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
           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
我想为每对唯一的日期和日期变量求x、y和z的和。应该是这样的:

 > 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
           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

有什么帮助吗??非常感谢

有几种方法可以做到这一点,关于如何做到这一点有很多答案

这里有三种常见的方法,一种是在baser中,一种是使用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

尝试使用连接“date”和“day”的人造列进行tapply操作。

我相信您可以使用ave命令,但您可以尝试什么?您显示的内容更像是矩阵的打印输出,而不是data.frame。你看过聚合吗?@AnandaMahto不,它是一个数据帧。我把[]myself@MCP_infiltratorave是不合适的,因为我想要的是总和而不是平均数…我想我以前用过ave,FUN=sum,请看这篇文章链接,如果我只是偏离了基准,请让我知道。