本节书摘来自异步社区《从Excel到R 数据分析进阶指南》一书中的第3章,第3.1节,作者 王彦平(蓝鲸),更多章节内容可以访问云栖社区“异步社区”公众号查看
第3章 数据表清洗
从Excel到R 数据分析进阶指南
本章是对数据表中的问题进行清洗,主要内容包括对空值、大小写问题、数据格式和重复值的处理。这里不包含对数据间的逻辑验证。
3.1 处理空值(删除或填充)
我们在创建数据表的时候,在price字段中故意设置了几个NA值。对于空值的处理方式有很多种,既可以直接删除包含空值的数据,也可以对空值进行填充,比如用0填充或者用均值填充。还可以根据不同字段的逻辑对空值进行推算。
Excel中可以通过“查找和替换”功能对空值进行处理,将空值统一替换为0或均值。也可以通过“定位”空值来实现。
R中处理空值的方法比较灵活,既可以使用 na.omit()函数用来删除数据表中包含空值的数据,也可以用特定的值对空值进行填充。下面的代码和结果中可以看到使用na.omit()函数后,包含NA值的两个字段已经不见了。返回的是一个不包含空值的数据表。
#删除包含空值的行
df_na<-na.omit(df)
除此之外也可以使用数字对空值进行填充,下面的代码使用0对空值字段进行填充。
#将空值填充为0
df[is.na(df)] <- 0
我们继续使用填充的方式来处理空值,使用price列的均值来填充NA字段,在要填充的数值中使用mean()函数先计算price列当前的均值,然后使用这个均值对NA进行填充。可以看到两个空值字段显示为3526。
#将空值填充为均值
df[is.na(df)] <- mean(df_na$price)