我正在尝试过滤出多列中具有NA值的行。只有当所有感兴趣的列都是NA时,才应该删除一行。
场景与这个问题相同(但我没有足够的名气来发表评论):
基于多列NA的数据帧过滤
其中一个解决方案是使用:
library(dplyr)
df_non_na <- df %>% filter_at(vars(type,company),all_vars(!is.na(.)))
从“过滤器”开始
_
在“正在以dplyr进行折旧”时,我如何使用"filter“和”dplyr“来实现类似的结果?
发布于 2021-03-01 02:38:13
我们可以使用
循环遍历列'type‘、'company’并返回在指定列中没有任何NA的行
library(dplyr)
df %>%
filter(across(c(type, company), ~ !is.na(.)))
# id type company
#1 3 North Alex
#2 NA North BDA
使用
,有两个选项类似于
与一起使用
df %>%
filter(if_any(c(company, type), ~ !is.na(.)))
# id type company
#1 2 ADM
#2 3 North Alex
#3 4 South
#4 NA North BDA
#5 6 CA
或者使用
df %>%
filter(if_all(c(company, type), ~ !is.na(.)))
# id type company
#1 3 North Alex
#2 NA North BDA
数据
df <- structure(list(id = c(1L, 2L, 3L, 4L, NA, 6L), type = c(NA, NA,
"North", "South", "North", NA), company = c(NA, "ADM", "Alex",
NA, "BDA", "CA")), class = "data.frame", row.names = c(NA, -6L
))
https://stackoverflow.com/questions/66412600
复制相似问题