R,Sum频率数据帧的名称

时间:2013-05-21 16:59:38

标签: r sum dataframe

我有一个看起来像这样的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

3 个答案:

答案 0 :(得分:2)

开发plyr替代方案:

ddply(data,~Name,summarise,freqsum=sum(freq))

答案 1 :(得分: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

答案 2 :(得分:1)

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

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

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

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