R语言中计算含NA数据框列均值的方法(不使用na.omit())
计算含NA值列的汇总统计(保留其他列含NA的观测)
核心思路是利用统计函数的na.rm = TRUE参数,只忽略当前计算列的NA值,不会对整个数据框的行做删除操作,完美匹配你的需求。以下是具体实现方式:
基础R原生方法
直接针对mass列调用统计函数,并开启na.rm = TRUE:
- 计算均值:
mean(df$mass, na.rm = TRUE) - 计算中位数:
median(df$mass, na.rm = TRUE) - 计算求和:
sum(df$mass, na.rm = TRUE) - 计算标准差:
sd(df$mass, na.rm = TRUE) - 生成完整汇总统计(自动忽略NA,还会显示NA的数量):
summary(df$mass)
dplyr包(tidyverse生态)方法
如果习惯用管道式操作,可以用dplyr的summarize函数:
- 先加载包:
library(dplyr) - 计算单个统计量:
df %>% summarize(mass_mean = mean(mass, na.rm = TRUE))
- 一次性计算多个统计量(按需调整):
df %>% summarize( mass_mean = mean(mass, na.rm = TRUE), mass_median = median(mass, na.rm = TRUE), mass_sd = sd(mass, na.rm = TRUE), mass_total = sum(mass, na.rm = TRUE), valid_count = sum(!is.na(mass)) # 统计mass列的有效观测数 )
以上所有方法都只会处理mass列的NA值,不会删除其他列含NA但mass列有有效值的行。
内容的提问来源于stack exchange,提问作者Gaspar
相关产品推荐
相关产品推荐

