处理缺失值

> #创建leadership数据框
> manager <- c(1:5)
> data <- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/9")
> country <- c("US","US","UK","UK","UK")
> gender <- c("M","F","F",'M',"F")
> age <- c(32,45,25,39,99)
> q1 <- c(5,3,3,3,2)
> q2 <- c(4,5,5,3,2)
> q3 <- c(5,2,5,4,1)
> q4 <- c(5,5,5,NA,2)
> q5 <- c(5,5,2,NA,1)
> leadership <- data.frame(manager,data,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors = FALSE)
> #变量的重命名
> #修改变量名有两种,一种是调用一个交互式的编辑器。然后手动重命名,另一种是以编程的方式重命名
> #第一种调用一个交互式的编辑器重命名,使用fix()函数
> fix(leadership)
> #第二种方式是以编程的方式可以通过names()函数来重命名变量。例如
> names(leadership)[2] <- "testDate"
> names(leadership)
 [1] "manager"  "testDate" "country"  "gender"   "age"      "q1"       "q2"      
 [8] "q3"       "q4"       "q5"      
> leadership
  manager testDate country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
2       2 10/28/08      US      F  45  3  5  2  5  5
3       3  10/1/08      UK      F  25  3  5  5  5  2
4       4 10/12/08      UK      M  39  3  3  4 NA NA
5       5    5/1/9      UK      F  99  2  2  1  2  1


> #对多个列名重命名
> names(leadership)[6:10] <- c("item1","item2","item3","item4","item5")、
> #还可以使用plyr包中的rename()函数,可以用于修改变量名。
>#rename()函数的使用格式为
>rename(dataframe,c(oldname="newname",oldname="newname",...))
>#例子
> #声明plyr包
> library(plyr)
> leadership <- rename(leadership,c(manager="managerID",testDate="testDate"))
> is.na(y)
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE


#缺失值
#在R中,缺失值以符号NA(Not Available,不可用)表示,R中字符型和数值型数据使用的缺失值符号是相同的
#函数is.na()可以识别缺失值
#请注意is.na()函数作用于一个对象上时,它将返回一个相同大小的对象,如果某个元素是缺失值,
#相应的位置将被改写成TRUE,不是缺失值的位置则返回FALSE。
#例子
y <- c(1,2,3,NA)
is.na(y)

> #例子2
> is.na(leadership[6:10])
  item1 item2 item3 item4 item5
1 FALSE FALSE FALSE FALSE FALSE
2 FALSE FALSE FALSE FALSE FALSE
3 FALSE FALSE FALSE FALSE FALSE
4 FALSE FALSE FALSE  TRUE  TRUE
5 FALSE FALSE FALSE FALSE FALSE
> #创建leadership数据框
> manager <- c(1:5)
> data <- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/9")
> country <- c("US","US","UK","UK","UK")
> gender <- c("M","F","F",'M',"F")
> age <- c(32,45,25,39,99)
> q1 <- c(5,3,3,3,2)
> q2 <- c(4,5,5,3,2)
> q3 <- c(5,2,5,4,1)
> q4 <- c(5,5,5,NA,2)
> q5 <- c(5,5,2,NA,1)
> leadership <- data.frame(manager,data,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors = FALSE)



> #缺失值的应用
> #一,可以重编码某些值为缺失值
> #例如leadership中有一个年龄为99的异常值,可以把这个异常值重编码为缺失值,列子
> leadership$age[leadership$age == 99]
[1] 99
> leadership$age[leadership$age == 99] <- NA
> leadership$age
[1] 32 45 25 39 NA
> #二在分析中排除缺失值
> #在确定了缺失值的位置以后,你需要在进一步分析之前以某种方式删除这些缺失值。原因是,含有缺失值
> #的算术表达式和函数的计算结果也是缺失值。例子
> x <- c(1,2,NA,3)
> y <- x[1] + x[2] +x[3] + x[4]
> z <- sum(x)
> y,z
Error: unexpected ',' in "y,"
> y
[1] NA
> z
[1] NA
> #很多的函数都拥有一个na.rm=TRUE参数,可以在计算之前移除缺失值并使用剩余值进行计算
> y <- sum(x,na.rm = TRUE)
> y
[1] 6
> #同时可以通过na.omit()移除所有含有缺失值的观测。na.omit()可以删除所有含有缺失数据的行,例子
> leadership
  manager     data country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
2       2 10/28/08      US      F  45  3  5  2  5  5
3       3  10/1/08      UK      F  25  3  5  5  5  2
4       4 10/12/08      UK      M  39  3  3  4 NA NA
5       5    5/1/9      UK      F  NA  2  2  1  2  1
> newdata <- na.omit(leadership)
> newdata
  manager     data country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
2       2 10/28/08      US      F  45  3  5  2  5  5
3       3  10/1/08      UK      F  25  3  5  5  5  2
> 但是当缺失值比较多的时候就需要更加复杂的处理缺失值的方式了,
"但是当缺失值比较多的时候就需要更加复杂的处理缺失值的方式了?
> #如果缺失值比较少可以删除含有缺失值的行,但是当缺失值比较多的时候就需要更加复杂的处理缺失值的方式了,
> #这种情况下就不适合直接删除含有缺失值的行
> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值