如何移除R语言数据框中所有Num值均为NA的分组?
移除全NA分组的解决方案
这里提供两种常用的R语言实现方式,帮你移除所有Num列全为NA的分组(比如示例中的C组):
方法一:基础R原生写法
先筛选出Num列不全为NA的分组,再保留这些分组的行:
# 提取符合条件的分组名 valid_groups <- unique(df$Group)[tapply(df$Num, df$Group, function(x) !all(is.na(x)))] # 过滤数据框 df_filtered <- df[df$Group %in% valid_groups, ]
方法二:tidyverse(dplyr)简洁写法
如果习惯使用管道式语法,可以用dplyr包实现:
library(dplyr) df_filtered <- df %>% group_by(Group) %>% filter(!all(is.na(Num))) %>% # 保留Num不全为NA的分组 ungroup() # 可选:取消分组状态,方便后续操作
最终结果
执行后得到的df_filtered会保留A、B组的所有行,移除C组:
> df_filtered Group Num 1 A 1 2 A 2 3 A 3 4 B 1 5 B 2 6 B NA
内容的提问来源于stack exchange,提问作者ZainNST
相关产品推荐
相关产品推荐

