数据集:
# Groups: SITEPLOT [21,143]
L4_KEY HEMIAB SITEPLOT
<fct> <dbl> <fct>
1 82g Downeast Coast 0 ACAD 1
2 82g Downeast Coast 0 ACAD 100
3 82g Downeast Coast 0 ACAD 101
4 82g Downeast Coast 0 ACAD 102
5 82g Downeast Coast 0 ACAD 103
6 82g Downeast Coast 0 ACAD 104
7 82g Downeast Coast 0 ACAD 105
8 82g Downeast Coast 0 ACAD 107
9 82g Downeast Coast 0 ACAD 108
10 82g Downeast Coast 0 ACAD 109
# ... with 21,133 more rowsHEMIAB表示某一物种的丰度。此数据集是基于绘图级别的。我想知道有多少不同的L4_KEYs没有丰富的这种物种,即那些没有任何地块有HEMIAB >0。由于这个数据集不是在L4_KEY级别上,所以我很难找到一个简单的解决方案。任何帮助都会很好。我尝试过各种dplyr和聚合解决方案,但是无法让它基于L4_KEY,而不是基于绘图级别。因为某种原因,我对此有异议
发布于 2020-09-10 20:45:33
我们可以根据'HEMLAB‘的值对'L4_KEY’列进行子集,即那些具有'HEMLAB‘> 0的列,获取unique元素,从'L4_KEY’的levels中使用setdiff,并得到那些值不大于0的length (在base R中)。
length(setdiff(levels(df1$L4_KEY), unique(df1$L4_KEY[df1$HEMLAB > 0])))另一个选项是按'L4_KEY‘分组,filter 'HEMLAB’中的all值小于或等于0,ungroup并获取distinct元素
library(dplyr)
out <- df1 %>%
group_by(L4_KEY) %>%
filter(all(HEMLAB <=0)) %>%
ungroup %>%
distinct(L4_KEY) %>%
droplevels()https://stackoverflow.com/questions/63837431
复制相似问题