tidyverse包-reader

2021-08-20  本文已影响0人  萍智医信

加载包及读取数据

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) 
上一篇 下一篇

猜你喜欢

热点阅读