我有一个物种矩阵的网站,如下所示:
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)
该基质具有三个位点A,B,C和两个种类sp1,sp2。
我正在尝试构建代码,按站点汇总每个物种的丰度。最终输出应该是一个数据框,其中一列具有该位点,第二列具有物种名称,第三列具有该物种的丰富度。
我猜这必须在每个网站的循环中完成,然后将摘要放入新的数据框中。
输出应该如下所示:
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
答案 0 :(得分: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