这是我的代码:
airquality %>% filter(across(everything(), ~ sum(is.na(.x)) > 1))
我正在尝试过滤具有多个 NA 的行。
实现这一目标的唯一方法是使用 mutate
函数。
airquality %>% rowwise() %>% mutate(n_NA = sum(is.na(across(everything())))) %>%
filter(n_NA > 1)
但这并不是一个聪明的方法。
我需要仅使用filter
功能。
有什么帮助吗?
最佳答案
我们可以使用rowSums
在filter
中创建逻辑表达式
library(dplyr)
airquality %>%
filter(rowSums(is.na(.)) > 1)
-输出
# Ozone Solar.R Wind Temp Month Day
#1 NA NA 14.3 56 5 5
#2 NA NA 8.0 57 5 27
或者使用rowwise
和c_across
airquality %>%
rowwise %>%
filter(sum(is.na(c_across(everything()))) > 1)
# A tibble: 2 x 6
# Rowwise:
# Ozone Solar.R Wind Temp Month Day
# <int> <int> <dbl> <int> <int> <int>
#1 NA NA 14.3 56 5 5
#2 NA NA 8 57 5 27
关于r - 在 dplyr 过滤器行中 NA 数量大于 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66925076/