如何对R中的数据帧进行“子集合”

时间:2016-02-19 23:08:42

标签: r

快速提问。

这是我的数据集的采样器:

 name  date size
999321   -5   20
999321   -5   40
999321   59   50
999321   59   50
999322   -5   32
999322   -5   45
999322   -5   20
999322   66   13
999322   66   24
999322   66   14
999322  101   24
999322  101   23
999322  101   15

因此。我希望根据它们所属的date按照大小的总和,然后根据它们所属的name进行分组。基本上我希望我的数据帧变成这样:

name    date  size
999321   -5   80 {20+60)
999321   59   100 {50+50}
999322   -5   97 {32+45+20)
999322   66   51 {13+24+14}
999322  101   62 {24+23+15}

我想创建一个循环函数,根据size汇总date值,直到观察数用完为止,但问题是每个主题的观察数量变化很大(如您所见,主题999321有4个观察值(每个date值为2个),但999322有9个观察值,这发生在我的数据集的整个样本中(共有来自322个主题的4879个观察结果)。 / p>

那么,我该怎么做呢?

谢谢

2 个答案:

答案 0 :(得分:1)

尝试使用data.table包:

df[, list(sum(size)), by=list(name,date)] 

或者您可以使用sqldf包:

sqldf("select name, date, sum(size) as size from DF group by name, date")



name date size
1 999321   -5   60
2 999321   59  100
3 999322   -5   97
4 999322   66   51
5 999322  101   62

答案 1 :(得分:0)

或者

> aggregate(size ~ name + date, data=d, FUN="sum")
    name date size
1 999321   -5   60
2 999322   -5   97
3 999321   59  100
4 999322   66   51
5 999322  101   62