Вычисление количества строк, равных нулю: проблемы с импортом данных? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть фрейм данных bwsp, который содержит данные о численности многих видов в двух местах и ​​выглядит примерно так:

          Location      sp1 sp2 sp3 sp4
sample1      SiteA       0  12  0   0
sample2      SiteA       0  3   0   0
sample3      SiteA       1  0   0   0
sample4      SiteB       0  0   6   0
sample5      SiteB       2  1   1   0
sample6      SiteB       0  1   0   80
sample7      SiteB       2  1   1   0
sample8      SiteB       0  0   0   0

Я рассчитываю общую численность всех видов в каждом образце, используя:

bwsp$N <- rowSums(bwsp)

Теперь я хочу подсчитать, сколько образцов (= строк) имеют нулевое содержание (т. Е. N = 0) в каждом месте. Я начал с:

 library(tidyverse)
 sum(bwsp$N == "0")

и не нашел ни одной строки, суммированной с нулем. Но я знаю, что это неправильно! (Я обработал образцы, и я знаю, что есть несколько «пустых»). Поэтому я проверил это с помощью:

> summary(bwsp$N)

Я был очень удивлен, увидев, что минимальное N было 1,0. Я дважды проверил другие сводные статистические данные в Excel, и они тоже не совсем совпадают.

Это просто ошибки округления? Что я делаю неправильно?

NB. Я только что проверил это с помощью фиктивных данных, которые я предоставил выше, и они работали просто отлично. Это заставляет меня думать, что я делаю что-то не так с тем, как я передаю данные в R, т.е. bwsp <- read.csv("dummybwsp.csv", row.names = 1).

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Как только я урезал вопрос, я смог вернуться к исходному сценарию и увидеть свою ошибку. В другой своей работе я сначала рассчитал некоторые индексы разнообразия, используя:

bwsp$shann <- diversity(bwsp)
bwsp$simp <- diversity(bwsp, "simpson")

Конечно, они добавляют к одному и, следовательно, добавляют по одному к каждой строке данных. Не было никаких проблем с оригинальным сценарием, который я написал, но была проблема со мной, который не думал тщательно о том, как я манипулировал данными.

Мне удалось устранить эту проблему, указав столбцы данных, используемых в расчетах:

bwsp$shann <- diversity(bwsp[,1:64])
bwsp$simp <- diversity(bwsp[,1:64], "simpson")
bwsp$N <- rowSums(bwsp[,1:64])

Уф! Это было хорошим напоминанием, чтобы действительно подумать о моих данных!

0 голосов
/ 12 ноября 2018

Заменить

bwsp$N <- rowSums(bwsp)

с

bwsp$N <- rowSums(bwsp[-1])

для исключения первого столбца, так как rowSum () требует числовых данных.

...