|
任何规模的项目中,数据都可能由于研究对象未作答问题,设备故障等原因而不完整。面对浩瀚数据,如何能够简便、快捷又准确的判别、重编码或排除这些缺失值,是数据整理中重要的一步。R语言作为一个近年来逐渐受到重视的统计分析软件,在数据处理方面有其独特的优势。本文由我们的美女余老师向大家介绍R语言在处理缺失值的应用。
在R中,缺失值以符号NA(not available,不可用)表示;不可能出现的值(例如,被0除的结果)通过符号NaN(not a number,非数值)来表示。注意:与SAS等程序不同,R中字符型和数值型数据使用的缺失值符号是相同的。
1. 使用R语言判别缺失值
R提供了一些函数,用于识别包含缺失值的观测。函数is.na()允许我们检测缺失值的存在。
假设有一个向量:
y<-c(1,2,3,NA)
然后使用函数:
is.na(y)
将返回c(FALSE,FALSE,FALSE,TRUE)。
请注意is.na()函数是如何作用于一个对象上的。它将返回一个相同大小的对象,如果某个元素是缺失值,相应的位置将被改写为TRUE,不是缺失值的位置则为FALSE。
2. 使用R软件重编码某些值为缺失值
可以使用赋值语句将某些值重编码为缺失值。例如下面这个向量:
age<-c(32,45,25,39,999)
缺失的年龄值被编码为999。在分析这一向量之前,必须让R知道本例中999代表缺失值(否则平均年龄将会受到异常值的影响而错的离谱),我们可以通过重编码这个变量完成这项工作:
age[age==99]<-NA
任何高于99的年龄值都将被修改为NA。但使用这一方法之前请确保所有的缺失数据再分析之前被妥善地编码为缺失值,否则分析结果将失去意义。
3.使用R软件在分析中排除缺失值
在确定了缺失值的位置后,你需要以某种方式删除这些缺失值。原因:含有缺失值的算术表达式和函数的计算结果也是缺失值。举例来说,考虑以下代码:
x<-c(1,2,NA,3)
y<-x[1]+x[2]+x[3]+x[4]
z<-sum(x)
由于x中的第三个元素是NA(缺失值),所以y和z也都是缺失值NA(缺失值)。
庆幸的是,多数数值函数都拥有一个na.rm=TRUE选项,可以在计算之前移除缺失值并使用剩余值进行计算:
x<-c(1,2,NA,3)
y<-sum(x,na.rm=TRUE)
这里y=6。
在使用函数处理不完整的数据时,请务必查阅他们的帮助文档(例如,help(sum)),检查这些函数是如何处理缺失数据的。
另外,我们也可以通过na.omit()移除所有含有缺失值的观测。na,omit()可以删除所有含有缺失数据的行。
统计211网现推出微信公众号平台,每日更新,由一批专业统计领域的专业人士撰稿,每位专家根据自己擅长的领域为各位统计爱好者提供原创或经典的科研统计相关信息。内容包含统计理论解析、应用案例解读、典型错误辨析等,也涉及统计方法在软件中的应用,例如 SPSS、R、SAS、STATA、Amos等统计软件,全方位多视角的介绍统计相关知识,力求为广大读者提供帮助。
公众号名称:统计211网
公众号ID: tj211_com
二维码.png
(15.1 KB, 下载次数: 1)
|
|