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真的没了。不然你以为修好了,结果分析时又出岔子。
生活中很多事都像处理缺失值——看起来是个小漏洞,不补上就总卡着。数据干净了,后面的分析才能顺溜起来。