首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用dplyr filter过滤多列中的NA

如何使用dplyr filter过滤多列中的NA
EN

Stack Overflow用户
提问于 2021-03-01 02:37:12
回答 1查看 480关注 0票数 3

我正在尝试过滤出多列中具有NA值的行。只有当所有感兴趣的列都是NA时,才应该删除一行。

场景与这个问题相同(但我没有足够的名气来发表评论):

基于多列NA的数据帧过滤

其中一个解决方案是使用:

代码语言:javascript
运行
复制
library(dplyr)
df_non_na <- df %>% filter_at(vars(type,company),all_vars(!is.na(.)))

从“过滤器”开始

_

在“正在以dplyr进行折旧”时,我如何使用"filter“和”dplyr“来实现类似的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 02:38:13

我们可以使用

循环遍历列'type‘、'company’并返回在指定列中没有任何NA的行

代码语言:javascript
运行
复制
library(dplyr)
df %>%
     filter(across(c(type, company), ~ !is.na(.)))
#     id  type company
#1  3 North    Alex
#2 NA North     BDA

使用

,有两个选项类似于

与一起使用

代码语言:javascript
运行
复制
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

或者使用

代码语言:javascript
运行
复制
df %>%
  filter(if_all(c(company, type), ~ !is.na(.)))
#   id  type company
#1  3 North    Alex
#2 NA North     BDA

数据

代码语言:javascript
运行
复制
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
))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66412600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档