加载包及读取数据
library(tidyverse)
v_information<-read_csv("vip_information.csv",col_names=T)
![](https://img.haomeiwen.com/i25702203/f8301749e294aba0.png)
![](https://img.haomeiwen.com/i25702203/376e824f3a445aa9.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()
))
![](https://img.haomeiwen.com/i25702203/e1eddb0ce1e5fc93.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)
![](https://img.haomeiwen.com/i25702203/c02ae0ca1319379e.png)
查看为什么出现NA
problems(v_information$class)
原来是特殊符号,字母转变成NA
![](https://img.haomeiwen.com/i25702203/dbb5add4cc28399f.png)
将向量csny字符型转变为日期型
d<-parse_date(v_information$csny,format ="%Y/%m/%d") #format ="%Y/%m/%d"定义日期格式
![](https://img.haomeiwen.com/i25702203/9ad054a4e66ca378.png)
problems(d)
![](https://img.haomeiwen.com/i25702203/fa75d4e6b9d3ee6d.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)
![](https://img.haomeiwen.com/i25702203/1f4b1929ff42a4c5.png)
除了上面的自定义函数方法,还可以直接用R里的基础函数as.Date直接将其转为日期型
v_information$csny<-as.Date(v_information$csny)
v_information$djsj<-as.Date(v_information$djsj)
网友评论