我有一个如下所示的数据框:
> 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
有任何帮助吗?非常感谢!!
答案 0 :(得分:1)
有几种方法可以做到这一点(以及关于SO的许多答案)如何做到这一点。
以下是三种常用方法,一种是基础R,一种是使用“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 :(得分:-1)
尝试使用连接'date'和'day'的人工柱进行tapply。