结合一些重复的行和总结他们的一个专栏

时间:2011-11-06 19:22:22

标签: r function sum dataframe plyr

我有这个数据框:

> names(events)
 [1] "EID"    "X"      "Y"      "trip"   "tow"    "catch"  "effort" "depth" 
 [9] "season" 

我的一些独特ID“EID”在162个案例中出现不止一次。

> length(events$EID)-length(unique(events$EID))
[1] 162

我想将每个复制EID组合在一起并总结它们的“捕获量”。 我一直在用plyr包尝试一些东西......但找不到一个相当简单的命令。

任何提示都将不胜感激! 非常感谢你!

1 个答案:

答案 0 :(得分:3)

以下是一个可以帮助您入门的示例:

library(plyr)

n = 100

# Simulate data
set.seed(12345)
EID   = factor(sample(10, n, replace=T))
catch = runif(n)
data  = data.frame(EID, catch)

# Sum catch by EID
ddply(data, 'EID', function(x) data.frame(catch.sum = sum(x$catch)))
> ddply(data, 'EID', function(x) data.frame(catch.sum = sum(x$catch)))
   EID catch.sum
1    1  6.041294
2    2  4.889522
3    3  2.466826
4    4  9.633270
5    5  5.673484
6    6  3.389666
7    7  6.572664
8    8  8.646577
9    9  4.056461
10  10  5.933441