考虑以下因素。
# 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
只能使用一个表达式。
答案 0 :(得分:0)
您可以在&
内使用all_vars()
来使用多个条件。
df %>%
filter_at(vars(starts_with("g")), all_vars(. == 1 & !is.na(.) ) )
# A tibble: 1 x 3
g1 g2 a
<dbl> <dbl> <int>
1 1 1 1