【发布时间】:2019-05-09 14:21:09
【问题描述】:
我有一个数据框,例如:
> tab
Groups Species Value
1 Group1 Sp1 1
2 Group1 Sp1 4
3 Group1 Sp2 78
4 Group1 Sp3 NA
5 Group1 Sp4 NA
6 Group2 Sp2 3
7 Group2 Sp3 9
8 Group2 Sp4 8
9 Group3 Sp1 9
10 Group3 Sp3 10
11 Group3 Sp3 110
12 Group3 Sp3 14
我正在尝试保留值 的组
我试过了:
tab %>%
group_by(Groups) %>%
filter(all(Value < 80))
但我不知道如何忽略过滤器中的NA values。
这里我应该得到:
> tab
Groups Species Value
1 Group1 Sp1 1
2 Group1 Sp1 4
3 Group1 Sp2 78
4 Group1 Sp3 NA
5 Group1 Sp4 NA
6 Group2 Sp2 3
7 Group2 Sp3 9
8 Group2 Sp4 8
有人有解决办法吗? 谢谢
如果我也有怎么办:
> tab
Groups Species Value sp mrca
1 Group1 Sp1 1 3 3
2 Group1 Sp1 4 3 3
3 Group1 Sp2 78 NA NA
4 Group1 Sp3 NA 3 12
5 Group1 Sp4 NA 3 3
6 Group2 Sp2 3 2 3
7 Group2 Sp3 9 2 40
8 Group2 Sp4 8 NA NA
9 Group3 Sp1 9 2 2
10 Group3 Sp3 10 3 3
11 Group3 Sp3 110 3 2
12 Group3 Sp3 14 2 3
我想过滤所有具有
我试过你的回答:
tab %>%
group_by(Groups) %>%
filter(all(Value < 80 |is.na(Value))) %>%
filter((all(abs(sp - mrca) %in% 0:9)|is.na(sp) & is.na(mrca)))
但它似乎不是正确的代码
我应该得到:
> tab
Groups Species Value sp mrca
1 Group1 Sp1 1 3 3
2 Group1 Sp1 4 3 3
3 Group1 Sp2 78 NA NA
4 Group1 Sp3 NA 3 12
5 Group1 Sp4 NA 3 3
【问题讨论】:
-
^ 不是完全的欺骗
-
你需要
tab%>% group_by(Groups) %>% filter(all(Value < 80 |is.na(Value)), abs(sp - mrca) %in% 0:9) -
我不明白为什么
Group2被删除了。您的逻辑表明 sp-mrca 对于这些行也是 TRUE (如果它是abs差异)` -
@akrun 是的,完美,非常感谢:)