处理缺失值
作者:互联网
> #创建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(leadreship)
Error: object 'leadreship' not found
> 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,FALSE,处理,08,age,leadership,缺失 来源: https://blog.csdn.net/weixin_42712867/article/details/93966650