Uploaded by 黄予晨

datacleaning

advertisement
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
数据清洗(Data Cleaning):
对数据进行重新审查和校验的过程
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
2022 年 6 月 29 日
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
1 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1 数据类型与转换的介绍
2 缺失值的探查与处理
3 异常值的定义与 boxplot 函数
4 错误数据的处理
5 插补办法
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
2 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
为什么选择“数据清洗”作为主题?
• 数据清洗是传统数据分析中非常重要的步骤: 填补、略去缺
失值, 统一变量的计量单位, 改变数据类型方便运算, 选择合
适的方式导入数据等对于我们的分析至关重要。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
3 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
为什么选择“数据清洗”作为主题?
• 数据清洗是传统数据分析中非常重要的步骤: 填补、略去缺
失值, 统一变量的计量单位, 改变数据类型方便运算, 选择合
适的方式导入数据等对于我们的分析至关重要。
• 在我们所将要进行的 project 中, 如何选择合适格式导入数
据, 设置数据集以及对于不同变量的处理 (连续型和离散型
的相互转化, 归一化处理) 都非常重要。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
3 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1 数据类型与转换的介绍
2 缺失值的探查与处理
3 异常值的定义与 boxplot 函数
4 错误数据的处理
5 插补办法
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
4 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
基本的数据类型与转换的介绍
1) 实数数值型变量 (numeric),例子如下:
1
2
3
a <- 1.5
class ( a )
输 出 : [ 1 ] " numeric "
2) 整数数值型变量 (integer),例子如下:
1
2
3
b <-1 L
class ( b )
输 出 : [ 1 ] " integer "
3) 字符型变量 (character),也就是字符串类 (string),例子如下:
1
2
3
c <- ’ kiss ’
class ( c )
输 出 : [ 1 ] " character "
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
5 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
4) 因子型变量 (factor),简单的分类型的变量,例子如下:
1
2
3
4
5
6
7
8
9
10
11
‘ ‘ ‘{ r }
a <-c ( ’ 男 ’ , ’ 女 ’ , ’ 男 ’ , ’ 女 ’ , ’ 男 ’)
( a <- factor ( a ))
levels ( a )
class ( a )
‘‘‘
输出 :
[1] 男 女 男 女 男
Levels : 男 女
[1] " 男 " " 女 "
[1] " factor "
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
6 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
5) 顺序型变量 (order), 考虑偏序关系的分类型变量,例子如下:
1
2
3
4
5
6
7
8
‘ ‘ ‘{ r }
score <-c ( ’B ’ , ’C ’ , ’A ’ , ’D ’ , ’A ’ , ’B ’)
( score _ o <- ordered
( score , levels = c ( ’D ’ , ’C ’ , ’B ’ , ’A ’ )))
‘‘‘
输出 :
[1] B C A D A B
Levels : D < C < B < A
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
7 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
特别地,我们关心如下“特殊值”类型:
1)NA(not available),意味着缺失值,需要占用位置,相关计算如
下:
1
2
3
4
5
6
7
8
9
10
11
12
13
‘ ‘ ‘{ r }
sum ( c (1 ,2 , NA ))
median ( c ( NA ,1 ,2 ,3))
median ( c ( NA ,1 ,2 ,3) , na . rm = T )
length ( c ( NA ,1 ,3))
3== NA
NA == NA
TRUE | NA
‘‘‘
输出 :
[1] NA [1] NA [1] 2
[1] 3 [1] NA [1] NA
[1] TRUE
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
8 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
2)NULL,意味着数学上的空集。
1
2
3
4
5
6
7
8
{r}
length ( c (1 ,2 , NULL ,4))
sum (1 ,2 ,3 , NULL )
x <- NULL ; c (x ,2)
输出 :
[1] 3
[1] 6
[1] 2
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
9 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
3)Inf,意味着无穷。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{r}
pi / 0
2 * Inf
Inf -1000
3 < - Inf
Inf == Inf
Inf + Inf
输出 :
[1] Inf
[1] Inf
[1] Inf
[1] FALSE
[1] TRUE
[1] Inf
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
10 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
4)NaN(not a number),表示该值未知,但可以肯定不是数值。
1
2
3
4
{r}
NaN +1
exp ( NaN )
均无输出 。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
11 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
数据的读入与转化
一般情况下, 我们所读入的数据是来自 excel 的 csv 文件。
用的数据导入函数为 read.csv, 其有变体 (read.csv2,read.delim
等) 对于 read.csv, 有以下参数需要注意:
file 输入所读的文件地址名。
header 是否读入数据第一行作为列名。
col.names 可以手动输入向量作为得到的 dataframe 的列名。
na.string 读入怎样的字符串时可以考虑为 NA。
colClasses 手动输入向量将对应的列规定为给定的变量类型。
stringAsFactors 若为 TRUE, 则将所有的字符型向量 (character
vectors) 转化为因子型向量 (factor vectors)。
sep 规定读入数据的分隔符。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
12 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1 数据类型与转换的介绍
2 缺失值的探查与处理
3 异常值的定义与 boxplot 函数
4 错误数据的处理
5 插补办法
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
13 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
下面介绍缺失值的探查与处理。
1. 对于数据集中谬误与缺失的分析, 在 R 中缺失值我们主要考虑
NA(not available) 的处理。
1) 对于传统的变量,is.na 函数可以用于判断是否存在缺失值,这
函数将 NA 类判别为真,其他判为假。下面是一个例子:
1
2
3
4
5
6
7
‘ ‘ ‘{ r }
is . na ( c (1 ,2 ,3))
is . na ( c (3 , NA ,2))
‘‘‘
输出 :
[1] FALSE FALSE FALSE
[1] FALSE TRUE FALSE
为了探查别的特殊值, 同样有函数 is.finite() 去检查是否为 Inf,
用法完全一致,不过在 R 中使用较少。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
14 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
2) 对于 Dataframe 和 matrix, 一个常用的函数为
complete.cases(), 若每行无缺失, 则返回 TRUE, 否则返回
FALSE, 由于 TRUE 代表 1,FALSE 为 0, 利用 complete.cases() 我
们可以了解缺失值数据在数据集中一定的性质。
注意:下一页中的代码样例只能在 console 或 script 里运行,而
不能在 Rmarkdown 里运行。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
15 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
‘ ‘ ‘{ r }
gender <-c ( ’f ’ , ’m ’ , ’m ’ , ’f ’ ,NA , ’m ’)
mark <-c (100 ,98 , NA ,22 ,54 ,98)
name <-c ( ’ kev ’ , ’ Sab ’ ,NA , ’ KK ’ , ’ BM ’ , NA )
stu <- data . frame ( gender , mark , name )
stu [ ! complete . cases ( stu ) ,] # 所 有 含 有 缺 失 值 的 行
mean ( complete . cases ( stu )) # 完 整 实 例 的 占 比
sum ( ! complete . cases ( stu )) # 不 完 整 实 例 的 个 数
‘‘‘
输出 :
gender mark name
3
m
NA <NA >
5
<NA >
54
BM
6
m
98 <NA > ( 所 有 含 有 缺 失 值 的 行 )
[1] 0 . 5 ( 完 整 实 例 占 比 )
[1] 3 ( 不 完 整 实 例 个 数 )
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
16 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
3) 缺失数据的处理
这里只简单介绍一种方法,即行删除法—---将所有含有缺失值的
实例的行直接删去。该方法利用 na.omit() 函数,实例如下(基
于上面代码的续写):new.stu<-na.omit(stu).
执行此句之后,缺失值实例已经被移去,并生成另一个新的实例
align 变量 new.stu,在 R 的 Data 窗口打开变量,可以看到它们
的对比:
图 2: 新变量 new.stu
图 1: 原变量 stu
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
17 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1 数据类型与转换的介绍
2 缺失值的探查与处理
3 异常值的定义与 boxplot 函数
4 错误数据的处理
5 插补办法
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
18 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
对于异常值 (outlier) 的定义非常多,比较常用的是:一个数据集
中的异常值是与对应变量的其余对象取值明显不符合的数值。需
要注意的是异常值并不等同于错误,但在实际操作中, 异常值需
要进行测查,在统计决策中进行考量。
在基础的 r 包中 boxplot.stats() 中的成员 out 可以用箱线图方法
帮助我们列出异常值 (outlier)(需要指出的是,这只是一种辅助
方法,现实问题应该有现实考量):
1
2
3
4
5
6
{r}
x <-c (1:10 ,20 ,30)
boxplot . stats ( x ) $ out
# 20 30 被 识 别 为 异 常 值
输出 :
[1] 20 30
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
19 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1 数据类型与转换的介绍
2 缺失值的探查与处理
3 异常值的定义与 boxplot 函数
4 错误数据的处理
5 插补办法
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
20 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1) 在实际的数据集中,有时会出现明显的错误的与事实不符合
的数据,例如:一个人的体重、年龄不可能是负数等。这里数据
的处理可以考虑 editrules 包中的 editset 函数,使用实例如下
(从这里开始的代码都要在 console 或 script 中运行):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
stu1 <- data . frame ( age
= c (20 ,21 ,34 ,150 ,88 ,92) ,
mark = c (100 , -8 ,97 ,61 ,44 ,32))
library ( ’ editrules ’)
( E <- editset ( c ( ’age >=0 ’ ,
’age <=100 ’ , ’ mark >=0 ’ ))) # 规 定 范 围
violatedEdits (E , stu1 ) # 探 查 错 误 数 值
输 出 : record num1 num2 num3
1 FALSE FALSE FALSE
2 FALSE FALSE TRUE
3 FALSE FALSE FALSE
4 FALSE TRUE FALSE
5 FALSE FALSE FALSE
6 FALSE FALSE FALSE
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
21 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
错误探查的规则设定问题:有时候, 数据集中存在明显错误的数
据, 但由于我们对于数据本身的性质并不熟悉, 无法直接给出合
理的数据的取值范围从而测查错误数据, 这时可以考虑通过对已
有数据的分析, 设定规则使得最少的数据不符合规则, 这一理论
基于的假设是:错误在数据中发生的机会很小, 并且如果发生那
么会是随机的。当我们对于设定 editerules 没有头绪时, 可以考
虑使用 localizeErrors 函数进行分析。
1
2
3
4
5
6
7
8
{r}
violateEdits (E , stu1 [ c (2 ,4) ,])
# 2 ,4 号 数 据 各 出 现 了 一 个 错 误 ,
一 个 在 age 上 , 一 个 是 mark 上
le <- localizeErrors (E , stu1 [ c (2 ,4) ,] ,
method = ’ mip ’)
le $ adapt
#显示最小的需要满足的数据的取值范围
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
22 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
2) 在数据记录中, 一类非常重要的常见的错误是单位转换的错
误, 譬如第一次课程中对于日摄入饮料的调查 (L 和 mL) 这类错
误可以通过编写函数将单位量纲统一化处理。
3) 在人工抄录的数据中, 有时会出现记录错误, 并且这些错误有
时是非常明显的 (譬如变量 z 是由变量 x、y 计算得到的, 但记录
中的 z 却不符合已有的 x、y 的计算结果, 这类关系如:总 GDP、
劳动人口数、人均 GDP 等)。
4) 约束条件下的错误数值有时候对于某些问题, 例如线性规划,
问题中的变量是有一定约束的, 这意味着不满足这些约束的数据
应当是错误的。
由于时间有限,具体的码例我们不做过多介绍,请参阅 PDF 文
档。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
23 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
1 数据类型与转换的介绍
2 缺失值的探查与处理
3 异常值的定义与 boxplot 函数
4 错误数据的处理
5 插补办法
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
24 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
当个别数据出现问题时,除了找出它们,还要修复它们。下面介
绍几种常用方法。
1. 均值替换法, 我们将缺失的数据分为数值型和非数值型来进行
处理 (离散的数据可以看做非数值型), 数值型变量的缺失可以使
用已有的该变量在其余对象的取值的均值进行填补, 非数值型变
量的缺失, 利用已有的该变量在其余对象的取值的众数进行填补。
1
2
3
4
5
6
7
{r}
x <-c (1 ,2 ,3 ,4 , NA ,5 , NA )
( x [ is . na ( x )] <- mean (x , na . rm = T ))
x
输出 :
[1] 3
[1] 1 2 3 4 3 5 3
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
25 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
类似的也有中位数替换法:
1
2
3
4
5
{r}
library ( Hmisc )
x <-c (1 ,2 ,3 ,4 , NA ,7 , NA )
x <- impute (x , fun = mean )
x <- impute (x , fun = median )
均值替换是一种便捷的方式, 其优点在于不会对均值估计产生影
响, 但缺点也非常明显:这种方法建立在完全随机缺失的假设上,
会造成方差和标准差减小, 造成有偏估计。
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
26 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
当变量之间有一定关系时, 可以考虑通过使用回归模型利用已有
变量的记录值对某一变量的缺失值进行回归再填补 (下例:鸢尾
花数据集, 用花瓣宽和花萼宽对花萼长度进行回归填补)
1
2
3
4
5
6
7
8
{r}
data ( " iris " )
iris $ Sepal . Length [1:10] <- NA
model <- lm ( Sepal . Length ~ Sepal .
Width + Petal . Width , data = iris )
I <- is . na ( iris $ Sepal . Length )
iris $ Sepal . Length [ I ] <- predict
( model , newdata = iris [I ,])
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
27 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
hot deck imputation:对于数值型变量和类别型变量的缺失值, 当
已有数据足够充分时, 可以考虑从其余的已有的相似的记录中的
数据进行抽取来填补缺失值。
这种方法的一种常用的形式如下代码样例所示:随机抽取填充,
在同一变量下已有数据中随机进行抽取再填补缺失值。
1
2
3
4
5
6
7
{r}
library ( Hmisc )
data ( " women " )
height <- women $ height
height [ c (6 ,9)] <- NA # 加 入 缺 失
height
( height <- impute ( height , ’ random ’ )) # 随 机 抽 取 填 补
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
28 / 29
.
为什么选择“数据清洗”作为主题? 数据类型与转换的介绍 缺失值的探查与处理 异常值的定义与 boxplot 函数 错误数据的处理 插
Thanks!
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
郭佩文,黄予晨,王天润,范伯雍,郝起正,童殷祺
数据清洗(Data Cleaning):
29 / 29
.
Download