我有一个数据框,显示每个物种(列)的每个地块(线)的树木数量。
我有 115 种树木在列和 6264 个地块
头(特别是)
02 03 04 05 06 07 08S 09 10 11 12P 12V 13B 13C 13G 14 15P 15S 16 17C
600005 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 32 0 0
600008 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 5
600012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
600030 3 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
600033 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
600035 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我正在尝试计算每个地块中每种物种的比例。我试图这样做:
apply(esp,c(1,2), function(x){ifelse(x>0, x/sum(x)*100,0)})
我想要的是一个数据框,其中不同的图为线,物种的比例为列。
感谢您的帮助。
我回来只是为了一个愚蠢的问题:现在我的数据框包含每个地块中每个物种的比例,我想选择所有具有超过 80% 的一个物种的“纯”地块。
我知道如何为一个物种选择行:
pur<-prop[which(prop[,1]>80),]
这行得通,给了我想要的东西,但是由于我有 115 列,我尝试使用循环来完成它:
for (i in 1:115){
prop[which(prop[,i]>80),]
}
但效果并不好。
我也尝试过应用,但 which() 不是一个函数,所以它也不起作用。
apply(prop,2,which(prop[,1]>80))
谢谢