合普知识库
柔彩主题三 · 更轻盈的阅读体验

R统计缺失值处理:轻松搞定数据中的“空格”问题

发布时间:2026-01-20 01:10:47 阅读:220 次

ref="/tag/426/" style="color:#C468A7;font-weight:bold;">数据里总有空着的格子?别急,R语言有办法

做数据分析的时候,谁没碰上过那种表格——明明该填数字的地方却空着,像是忘了写作业的学生。这种“缺失值”在R语言里叫NA,看着不起眼,但跑回归、画图时一不小心就报错。其实只要几步,就能把这些空格处理得明明白白。

先看看你的数据有多少“空位”

拿到数据第一件事,不是急着删,而是搞清楚哪里缺、缺多少。用head()瞄一眼前几行:

head(data)

再用is.na()查哪些是缺失值,sum一下总数:

sum(is.na(data$age))

比如你发现“年龄”这一列有15个NA,心里就有谱了。

简单粗暴但实用:直接去掉

如果缺失不多,最省事的办法就是把含有NA的行整个扔掉。na.omit()函数专干这活:

clean_data <- na.omit(data)

这招适合数据量大、缺得少的情况。就像做菜时蒜末少了一点,不影响大局,直接继续炒就行。

想留着数据?试试填补法

要是每一行都挺重要,删了可惜,那就补上。常见的是用平均值填数值型变量:

data$income[is.na(data$income)] <- mean(data$income, na.rm = TRUE)

分类变量可以用众数,比如“性别”列缺了,多数是“女”,那就补“女”。也可以按组填充,比如不同班级的学生身高,按班级算平均再填。

高级点的做法:用模型猜 missing 值

如果你觉得平均值太糙,可以试试mice包,它会用其他变量来“猜”缺失的那个值:

library(mice)
imputed <- mice(data, m = 5, method = "pmm")
completed_data <- complete(imputed)

这就像邻居告诉你:“老张家孩子一般长到1米7,他家老二虽然没量,估计也差不多。”

记得检查处理后的结果

不管用哪种方法,处理完再跑一遍sum(is.na()),确认NA真的没了。不然你以为修好了,结果分析时又出岔子。

生活中很多事都像处理缺失值——看起来是个小漏洞,不补上就总卡着。数据干净了,后面的分析才能顺溜起来。