You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按组过滤两列无缺失值(NA)的数据失败,求解决方案

解决方法

要筛选出x分组后z1、z2两列均无缺失值的分组,你需要修正列的引用方式,确保is.na()作用于数据列而非列名字符串。

正确代码(支持动态列名)

如果需要用变量指定列名(比如你的columns向量),可以结合across()和all_of()来实现:

columns <- c("z1", "z2")
df %>% 
  group_by(x) %>% 
  filter(all(across(all_of(columns), ~ !is.na(.x))))

固定列名的简化写法

如果列名固定,也可以直接分别检查每组的列是否全为非缺失值:

df %>% 
  group_by(x) %>% 
  filter(all(!is.na(z1)) & all(!is.na(z2)))

原代码失效原因

你之前的代码all(!is.na(!!columns))逻辑错误:!!columns只是把字符向量c("z1","z2")展开,is.na()检查的是这些字符串本身(而非数据框的对应列),自然无法正确判断分组内的缺失值情况。

内容的提问来源于stack exchange,提问作者HappyPy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:34:58