这可能是一个愚蠢的问题,但我已经阅读了Crawley关于数据帧的章节,并在互联网上搜索了很多,但仍然无法使任何东西工作。
这里有一个类似于我的示例数据集:
> data<-data.frame(site=c("A","A","A","A","B","B"), plant=c("buttercup","buttercup",
"buttercup","rose","buttercup","rose"), treatment=c(1,1,2,1,1,1),
plant_numb=c(1,1,2,1,1,2), fruits=c(1,2,1,4,3,2),seeds=c(45,67,32,43,13,25))
> data
site plant treatment plant_numb fruits seeds
1 A buttercup 1 1 1 45
2 A buttercup 1 1 2 67
3 A buttercup 2 2 1 32
4 A rose 1 1 4 43
5 B buttercup 1 1 3 13
6 B rose 1 2 2 25
我想要做的是创建一个情境,其中只有当唯一的 site、plant、treatment 和 plant_numb 组合存在时,“seeds”和“fruits”才会被加起来。理想情况下,这将导致行数减少,但原始列(即我需要上面的示例看起来像这样)得到保留。 site plant treatment plant_numb fruits seeds
1 A buttercup 1 1 3 112
2 A buttercup 2 2 1 32
3 A rose 1 1 4 43
4 B buttercup 1 1 3 13
5 B rose 1 2 2 25
这个例子相当基础(我的数据集大约有5000行),虽然你只看到需要求和的两行数据,但需要求和的行数会不同,范围从1到大约45。
我已经尝试过使用rowsum()和tapply()函数,但结果非常糟糕(错误提示告诉我这些函数对因子无效),所以如果您能指导一下正确的方向,我将不胜感激!
非常感谢!
plyr
和data.table
标签。很多问题基本上都涉及到这个。祝你好运! - Chase