



查看数据概况,包括行数、列数、所有列名以及数据集中每个变量的数据类型,以便更清晰地了解数据,主要使用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列,以及所有的列名、数据类型和具体数据。
下面使用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个缺失值在哪里尚且不清楚,此时需要进一步分析。
下面对缺失值进行探索分析,主要使用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个缺失值,“生物”和“化学”各有一个缺失值。下面对缺失值进行填充处理。
通过上述检测发现部分学科成绩缺失,可能是因为某种原因学生没有参加考试,此时我们使用特定数值(即0)进行填充,方法是将缺失值替换为0,代码如下(源码位置:资源包\Code\01\view_data.R):
df[is.na(df)] <- 0 # 将缺失值替换为 0 table(is.na(df)) # 再次统计缺失值 write.xlsx(df,"学生成绩统计分析/成绩表 1.xlsx") # 写入Excel 文件
描述性统计量主要查看学生成绩的最小值、最大值、第一四分位数、中位数、平均数等,主要使用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个缺失值。