购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 数据预处理

1.6.1 查看数据

查看数据概况,包括行数、列数、所有列名以及数据集中每个变量的数据类型,以便更清晰地了解数据,主要使用nrow()函数、ncol()函数、names()函数和sapply()函数,代码如下(源码位置:资源包\Code\01\view_data.R):

# 行数
nrow(df)
# 列数
ncol(df)
# 查看所有列名
names(df)
# 查看数据集中每个变量的数据类型
sapply(df, class)

运行程序,结果如图1.21所示。

图1.21 查看数据

从运行结果得知:数据共58行8列,以及所有的列名和数据类型。

接下来使用str()函数查看数据整体概况,代码如下:

str(df)

运行程序,结果如图1.22所示。

图1.22 查看数据整体概况

从运行结果得知:数据共58行8列,以及所有的列名、数据类型和具体数据。

1.6.2 缺失值查看与处理

1.缺失值识别

下面使用is.na()函数查看缺失值,代码如下(源码位置:资源包\Code\01\view_data.R):

is.na(df)

运行程序,结果如图1.23所示。

图1.23 使用is.na()函数查看缺失值

从运行结果得知:TRUE表示数据存在缺失,FALSE表示数据不存在缺失。如果数据很少,缺失值一目了然,例如“物理”和“化学”存在缺失值。但是如果数据量较大,看起来就不是很方便了,此时需要借助table()函数,代码如下:

table(is.na(df))

运行程序,结果如下:

FALSE  TRUE
  459     5

table()函数帮我们统计了数据不缺失和缺失的个数,值分别为459和5,也就是说学生成绩表有5个缺失值,具体这5个缺失值在哪里尚且不清楚,此时需要进一步分析。

2.缺失值探索分析

下面对缺失值进行探索分析,主要使用VIM包的aggr()函数对缺失值进行统计与可视化,以直观观察数据缺失情况,代码如下(源码位置:资源包\Code\01\view_data.R):

library(VIM)                                       # 加载VIM 包
val=aggr(df,prop = FALSE,number=TRUE,cex.axis=.7)  # 缺失值可视化
val                                                # =缺失值统计

运行程序,结果如下:

Missings in variables:
 Variable Count
     物理     3
     化学     1
     生物     1

可视化效果如图1.24所示。

图1.24 使用aggr()函数对缺失值进行统计并可视化

从运行结果得知:“物理”有3个缺失值,“生物”和“化学”各有一个缺失值。下面对缺失值进行填充处理。

3.缺失值填充

通过上述检测发现部分学科成绩缺失,可能是因为某种原因学生没有参加考试,此时我们使用特定数值(即0)进行填充,方法是将缺失值替换为0,代码如下(源码位置:资源包\Code\01\view_data.R):

df[is.na(df)] <- 0                        # 将缺失值替换为 0
table(is.na(df))                          # 再次统计缺失值
write.xlsx(df,"学生成绩统计分析/成绩表 1.xlsx") # 写入Excel 文件

1.6.3 描述性统计量

描述性统计量主要查看学生成绩的最小值、最大值、第一四分位数、中位数、平均数等,主要使用summary()函数,代码如下(源码位置:资源包\Code\01\view_data.R):

summary(df)

运行程序,结果如图1.25所示。

图1.25 描述性统计量

从运行结果得知:对于数值型数据,summary()函数给出的统计信息包括最小值(Min)、第一四分位数(1st Qu)、中位数(Median)、平均值(Mean)、第三四分位数(3rd Qu)和最大值(Max)。例如,语文最低分80,平均分97.14,最高分113.5。同时,summary()函数也可以对缺失值进行统计,例如,物理“NA's :3”表示有3个缺失值。 vFqP5W6Sc6WJLEOLebXs5vcwcwtkn4Fqsr2vT6BDuUZpPp+E68jhOV45xW60/hYN

点击中间区域
呼出菜单
上一章
目录
下一章
×