r - 在 dplyr 过滤器行中 NA 数量大于 1

标签 r dplyr

这是我的代码:

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功能。

有什么帮助吗?

最佳答案

我们可以使用rowSumsfilter中创建逻辑表达式

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

或者使用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

关于r - 在 dplyr 过滤器行中 NA 数量大于 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66925076/

相关文章:

r - 嵌套列表到单个表(按列名称合并?)

python - 按小时和天计算员 worker 数

r - 不同数据类型的bind_rows

r - 使用 dplyr 和 for 循环添加多个滞后变量

r - 如何匹配两个数据帧的字符值并在 R 中应用与此匹配对应的函数?

r - 在 r 中安装所需软件包的最佳方法

r - 疏浚中的子集 (MuMIn) - 如果存在主效应,则必须包括交互作用

r - 在 tidyverse 中组合多个时间序列

r - 如何为包括管道的代码创建循环

r - 在小标题中显示测量单位