计算总和为零的行数:导入数据时出现问题?

Calculating how many rows sum to zero: problems importing data?

我有一个数据框 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")

并发现没有行的总和为零。但我知道这是错误的! (我处理了这些样本,我知道有几个是 "empty"。)所以我检查了它:

> summary(bwsp$N)

看到最小的 N 是 1.0,我真的很惊讶。我仔细检查了 Excel 中的其他汇总统计数据,它们也不完全匹配。

这些只是舍入误差吗?我究竟做错了什么?

注意:我刚刚用上面提供的虚拟数据检查了这个,它工作得很好。这让我觉得我将数据输入 R 的方式有问题,即 bwsp <- read.csv("dummybwsp.csv", row.names = 1)

替换

bwsp$N <- rowSums(bwsp)

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

排除第一列,因为 rowSum() 需要数字数据。

一旦我减少了问题,我就能够回顾我的原始脚本并看到我的错误。在我的其他工作中,我首先使用以下方法计算了一些多样性指数:

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])

呸!这是一个很好的提醒,让我真正思考我的数据!