简体   繁体   English

在 dplyr 过滤器行数 NA 大于一

[英]In dplyr filter rows with number of NA bigger than one

This is my code:这是我的代码:

airquality %>% filter(across(everything(), ~ sum(is.na(.x)) > 1))

I am trying to filter the rows with more than one NAs.我正在尝试过滤具有多个 NA 的行。

The only way I achieve this was using mutate function.我实现这一目标的唯一方法是使用mutate function。

airquality %>% rowwise() %>% mutate(n_NA = sum(is.na(across(everything())))) %>%
                  filter(n_NA > 1)

But its not a clever way.但这不是一个聪明的方法。

I need to use only filter function.只需要使用filter function。

Any help?有什么帮助吗?

We can use rowSums to create a logical expression within filter我们可以使用rowSumsfilter中创建逻辑表达式

library(dplyr)
airquality  %>% 
    filter(rowSums(is.na(.)) > 1)

-output -输出

#   Ozone Solar.R Wind Temp Month Day
#1    NA      NA 14.3   56     5   5
#2    NA      NA  8.0   57     5  27

Or with rowwise and c_across或使用rowwisec_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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM