考虑以下的 tibble 表格。
# A tibble: 5 x 3
g1 g2 a
<dbl> <dbl> <int>
1 1 1 1
2 1 NA 2
3 2 1 3
4 2 2 4
5 2 2 5
如果且仅如果(a)g1 == 1
和g2 == 1
,并且(b)g1
和g2
不是缺失值,则我希望保留行。我可以使用filter_at
和all_vars
来实现此目的。请参见下文。
df <- tibble(
g1 = c(1, 1, 2, 2, 2),
g2 = c(1, NA, 1, 2, 2),
a = c(1 : 5)
)
df %>% filter_at(vars(starts_with("g")), all_vars(. == 1)) %>%
filter_at(vars(starts_with("g")), all_vars(!is.na(.)))
我的问题是如何将上面的两行filter_at
合并成以下形式:
df %>% filter_at(vars(starts_with("g")), all_vars(. == 1) & all_vars(!is.na(.)))
看起来all_vars
或者any_vars
只能接受一个表达式。
all_vars
中使用&
:all_vars(. == 1 & !is.na(.))
。 - aosmith