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