1

我有一个看起来像这样的data.frame:

      Name         freq         
1   species1        4              
2   species2        8              
3   species1        7              
4   species1        10             
5   species2        9              

我想总结每个物种名称的频率。预期结果:

      Name             freq
1    species1           21
2    species2           17
4

3 回答 3

2

这是一个使用data.table.

> library(data.table)
> DT <- data.table(X)
> DT[, sum(freq), by=Name]
       Name V1
1: species1 21
2: species2 17

X你的原件在哪里data.frame

如果您想标记新列,请包含list

> DT[, list(fsum=sum(freq)), by=Name]
       Name fsum
1: species1   21
2: species2   17
于 2013-05-21T20:01:25.430 回答
2

开发plyr替代方案:

ddply(data,~Name,summarise,freqsum=sum(freq))
于 2013-05-21T18:42:47.023 回答
2

假设您附加了 data.frame,只需执行此操作

tapply(freq, INDEX=list(Name),FUN=sum)

或者,对于名为“dataX”的数据框

tapply(dataX$freq, INDEX=list(dataX$Name),FUN=sum)
于 2013-05-21T17:59:09.340 回答