R基本数据管理--如何处理缺失值、数据类型转换

2018-08-09  本文已影响28人  天秤座的机器狗
#R基本数据管理--如何处理缺失值、数据类型转换

x <- c(1,2,3,NA) #定义一个向量
is.na(x) #判断向量中各个值是否为空值,如果是就返回TRUE,不是就返回FALSE.

# [1] FALSE FALSE FALSE  TRUE
#---------------------------------
  

#构建一个数据集
manager <- c(1,2,3,4,5)
date <- c("8/1/18","8/2/18","8/3/18","8/4/18","8/5/18")
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)


#变量导入数据框
survey <- data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors = FALSE)

#判断6-10列是否有缺失值
is.na(survey[,6:10])


#-------------------------------------
#   q1    q2    q3    q4    q5
#[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
--------------------------------------
 
#  x==NA 是不行的
  
#针对NA所做的所有逻辑判断和计算,结果都是空值
#比如  
x <- c(1,2,3,NA)
y <- x[1]+x[2]+x[3]+x[4]
y
#[1] NA

y <- sum(x,na.rm=T)  #去除空值
y

data <- na.omit(survey)
data

#-------------------
#manager   date country gender age q1 q2 q3 q4 q5
#1       1 8/1/18      US      M  32  5  4  5  5  5
#2       2 8/2/18      US      F  45  3  5  2  5  5
#3       3 8/3/18      UK      F  25  3  5  5  5  2
#5       5 8/5/18      UK      F  99  2  2  1  2  1
#------------------------------------------------
#na.omit这种删除缺失值的方法是会整行删除的


#数据类型转换
a <- c(2,5,7)
is.numeric(a)
#[1] TRUE
is.vector(a)
#[1] TRUE

b <- as.character(a)
is.numeric(b)
#[1] TRUE
#[1] TRUEs.vector(b)

data <- survey[order(survey$age),] #对age按行排序,中括号出现的时候通常是有条件的
data

#  manager   date country gender age q1 q2 q3 q4 q5
#3       3 8/3/18      UK      F  25  3  5  5  5  2
#1       1 8/1/18      US      M  32  5  4  5  5  5
#4       4 8/4/18      UK      M  39  3  3  4 NA NA
#2       2 8/2/18      US      F  45  3  5  2  5  5
#5       5 8/5/18      UK      F  99  2  2  1  2  1

data1 <- survey[order(survey$gender,survey$age),] #先按性别排序或者说分组,再按年龄排序
data1

#manager   date country gender age q1 q2 q3 q4 q5
#3       3 8/3/18      UK      F  25  3  5  5  5  2
#2       2 8/2/18      US      F  45  3  5  2  5  5
#5       5 8/5/18      UK      F  99  2  2  1  2  1
#1       1 8/1/18      US      M  32  5  4  5  5  5
#4       4 8/4/18      UK      M  39  3  3  4 NA NA

data2 <- survey[order(-survey$age),] #加一个-号变成降序排列
data2

#manager   date country gender age q1 q2 q3 q4 q5
#5       5 8/5/18      UK      F  99  2  2  1  2  1
#2       2 8/2/18      US      F  45  3  5  2  5  5
#4       4 8/4/18      UK      M  39  3  3  4 NA NA
#1       1 8/1/18      US      M  32  5  4  5  5  5
#3       3 8/3/18      UK      F  25  3  5  5  5  2

上一篇下一篇

猜你喜欢

热点阅读