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,请看这篇文章链接,如果我只是偏离了基准,请让我知道。