0

次のような種のマトリックスごとのサイトがあります。

colA= c("A","A","A","B","B","B","C","C","C")
colB= c(1,2,3,3,0,1,2,1,0)
colC= c(0,0,0,1,0,0,0,0,1)
df= data.frame (site=colA, sp1=colB, sp2=colC)

このマトリックスには、3 つのサイト A、B、C と 2 つの種 sp1、sp2 があります。

各種の生息数をサイトごとにまとめたコードを作成しようとしています。最終的な出力は、1 つの列にサイトがあり、2 番目の列に種名があり、3 番目の列にそのサイトでのその種の量があるデータフレームである必要があります。

これは各サイトのループで実行し、集計を新しいデータフレームに入れる必要があると思います。

出力は次のようになります。

colA= c("A","B","C","A","B","C")
colB= c("sp1","sp1","sp1","sp2","sp2","sp2")
colC= c(6,4,3,0,1,1)
output= data.frame (site=colA, species=colB, abundance=colC)
output
4

1 に答える 1

3

私はあなたがこれを望んでいると思います:

res <- aggregate(cbind(sp1,sp2)~site, df, sum)
library(reshape2)
melt(res)
#   site variable value
# 1    A      sp1     6
# 2    B      sp1     4
# 3    C      sp1     3
# 4    A      sp2     0
# 5    B      sp2     1
# 6    C      sp2     1
于 2013-10-09T13:35:29.393 に答える