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

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 に答える
2

代替案を作成するにはplyr:

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