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

如何在Tidyverse中过滤掉指定列全为NA的分组

移除分组中某列全为NA的组

先看你的数据:

tibble(
  A = c("A","A","B","B"),
  x = c(NA,NA,NA,1),
  y = c(1,2,3,4),
) %>% group_by(A) -> df

你想要保留x列至少有一个非NA值的分组(比如B组),去掉x全是NA的分组(比如A组)。之前用all(!is.na(x))不对,因为这个条件要求分组里所有x都不能是NA才会保留,刚好和你要的逻辑相反。

把all换成any就对了,代码如下:

df %>%
  filter(any(!is.na(x)))

运行后得到的结果就是你要的:

tibble(
  A = c("B","B"),
  x = c(NA,1),
  y = c(3,4),
)

简单说,any(!is.na(x))的作用是检查当前分组里是否存在至少一个x不是NA的行,只要满足这个条件,整个分组的所有行都会被保留,正好符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:31:29