У меня есть кадр данных, представляющий количество деревьев на каждом участке (линии) для каждого вида (столбца).Использование функции apply и выбора строк
У меня есть 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),]
}
Но это не получилось очень хорошо.
Я также пробовал с применением, но который() не является функцией, поэтому он тоже не работает.
apply(prop,2,which(prop[,1]>80))
Спасибо
Это именно то, что я искал. Это было намного проще, чем я думал. Еще раз спасибо Juba – Tom
Я возвращаюсь только для глупого вопроса: теперь, когда у меня есть своя структура данных с долей каждого вида на каждом участке, я мужу, чтобы выбрать все «чистые» участки, которые имеют более 80% один вид. – Tom
@ user2068053 Возможно, вам стоит задать вопрос по другому вопросу. – juba