加载包及读取数据
library(tidyverse)
v_information<-read_csv("vip_information.csv",col_names=T)
v_information.png
读取的向量数据类型.png
v_information<-read_csv("vip_information.csv",col_names=T,
col_types = cols(
kh = col_character(),
csny = col_date(),
xb = col_integer(),
djsj = col_date(),
class = col_integer()
))
向量数据类型更改后.png
发现什么问题了吗?解析后丢失了很多数据,出现很多NA,需要做下一步操作来处理。
下面我们通过tidyverse包里的函数来获得我们想要的数据类型
解析向量数据类型的函数:
parse_logical 逻辑型、parse_integer 整型、parse_double 严格的数值型、parse_number 数值型、parse_character 字符型、parse_factor 因子型、日期型:parse_datetime、parse_date、parse_time
将向量class字符型解析为整数型
v_information<-read_csv("vip_information.csv",col_names=T)
v_information$class<-parse_integer(v_information$class)
v_information$class.png
查看为什么出现NA
problems(v_information$class)
原来是特殊符号,字母转变成NA
特殊符号,字母转变成NA.png
将向量csny字符型转变为日期型
d<-parse_date(v_information$csny,format ="%Y/%m/%d") #format ="%Y/%m/%d"定义日期格式
d.png
problems(d)
有的日期数据后面有时间,故按给定的格式无法解读.png
自定义函数解决这一问题
parse_self<-function(dat){
d<-sapply(strsplit(dat,split=" "),function(x){x[[1]][1]}) #由于strsplit函数会将分裂后的数据转成列表,故用sapply函数将列表第一列提取出来
return(parse_date(d,format ="%Y/%m/%d"))
}
v_information$csny<-parse_self(v_information$csny)
v_information$djsj<-parse_self(v_information$djsj)
v_information.png
除了上面的自定义函数方法,还可以直接用R里的基础函数as.Date直接将其转为日期型
v_information$csny<-as.Date(v_information$csny)
v_information$djsj<-as.Date(v_information$djsj)
网友评论