【发布时间】:2018-09-26 10:05:56
【问题描述】:
我有一个植物物种的存在缺失矩阵,它看起来像这样......
set.seed(123)
Data <- data.frame(
endemic = sample(0:1, 10, replace = TRUE),
val1p1 = sample(0:1, 10, replace = TRUE),
val1p2 = sample(0:1, 10, replace = TRUE),
val1p3 = sample(0:1, 10, replace = TRUE),
val2p1 = sample(0:1, 10, replace = TRUE),
val2p2 = sample(0:1, 10, replace = TRUE),
val2p3 = sample(0:1, 10, replace = TRUE))
Data
endemic invasive val1p1 val1p2 val1p3 val2p1 val2p2 val2p3
1 1 0 0 1 1 0 0 1
2 1 1 0 0 1 1 0 1
3 1 0 1 0 0 0 1 0
4 0 0 0 1 0 0 1 0
5 0 1 1 0 1 1 1 0
6 1 1 0 0 0 1 0 1
7 1 1 0 0 0 1 1 1
8 1 1 1 1 0 1 0 0
9 0 1 1 1 0 0 1 1
10 0 0 1 0 1 0 1 1
矩阵显示一个物种 (1-10) 是地方性的还是入侵性的,以及该物种在地块中是否存在 (1) 或不存在 (0)。这些地块位于不同的山谷(val1,val2)
我想知道在山谷 1 (val1) 中发现了多少特有物种。因此,我需要知道在多个列(val1p1、val1p2、val1p3)中发现的物种总数,然后知道其中有多少是地方性的(即有多少与“地方性”列匹配)。
在本例中,山谷 1 的物种总数为 8 个,其中 4 个为特有种。我想要的输出只是山谷 1 的特有物种的数量!
我的真实数据集实际上相当大,我在 8 个不同山谷的 75 个地块中有 200 个物种,因此我需要快速(ish)方法来做到这一点!
显然,我无法对各行求和,因为同一物种出现在不同的地块中。我尝试先使用 mutate 将地块组合成单独的山谷...
Data %>% mutate(val1 = coalesce(va1p1,val1p2,val1p3)
但是,这并不能正常工作,因为并非所有的 0 都被替换为 1。
有什么建议吗?我对 R 还是很陌生。
【问题讨论】:
-
请使用种子更新您的示例数据:
set.seed(123);Data <- data.frame( ...,以便我们可以复制。如果您提供预期的输出,也很有帮助。