R语言关于时间格式转化为数值的解决方案

好了,在前一篇文章中,我们将数据集转化为numeric格式,以便于在实际工作中预测投资者是否再次投资。

不过上次的数据集转化,将时间格式全部转化为了NA,导致预测准确率下降了约5%(因为失去了时间早晚这个维度),我们今天就来讲一下如何将数据集中的时间变量转化为numeric格式。


首先我们先回忆一下将时间变量转化为numeric格式的难点:

因为读入数据集的时候,所有数据都是以factor格式存储,如果直接用as.numeric函数转化时间,会发生一个奇特的现象——时间顺序被打乱,我这边数据集的情况如下:

《R语言关于时间格式转化为数值的解决方案》

直接使用as.numeric函数转化时间,出现下图:

《R语言关于时间格式转化为数值的解决方案》

请问它的规律在哪里?!恕我眼拙,看了半天没明白它转化为数值的主要逻辑,不得已,我只有回去继续找可能实现的路径。

后来知道factor型变量直接转化为数值会出现这样的问题,那么我不用factor变量转化,先用character变量转化再转化为numeric行么?尝试如下:

《R语言关于时间格式转化为数值的解决方案》

使用as.character函数转化没有问题,但是再进行as.numeric函数转化就出现问题了!具体如下:

《R语言关于时间格式转化为数值的解决方案》

所有时间变量全变成了NA!你大爷的!那我辛辛苦苦转化时间变量为了啥?!

好,从头再来!这次我总结了教训,决定先把时间变量以时间的形式存储起来,然后再来进行as.numeric函数转化,看看会不会出现问题?尝试如下:

《R语言关于时间格式转化为数值的解决方案》

上面的函数直接使用as.date就行,接下来我们看看是否能使用as.numeric函数转化(因为我们的主要目的是保存时间变量的先后顺序,而不是绝对值,所以这里我们没有考虑绝对时间的对错问题),如下图:

《R语言关于时间格式转化为数值的解决方案》

大家可以看到,时序是正确的,如果不清楚,我在数值上加上720000就看的很清楚了!如下图:

《R语言关于时间格式转化为数值的解决方案》

好了,这样就可以知道,距离我们越近的时间,数值越大,这个变量就能精准的表达时间远近了!到此为止,这个数据集的基础清洗就完毕了!附上我的部分代码:

library(rJava)
library(xlsxjars)
library(xlsx)
library(Matrix)

data<-read.xlsx(‘G:/数据文件//建模分析/0718/33.xlsX’,1,encoding = ‘UTF-8’,header=T)
#对数据集进行字符化处理以便进行替换,原数据集数据类型为factor
data[] <- lapply(data, as.character) 
#将数据集中‘NA’数据替换为0
data[is.na(data)]<-0
#将数据集中‘是’数据替换为1
data[data==’是’]<-1
#将数据集中‘pc’数据替换为1
data[data==’pc’]<-1
#将数据集中‘wap’数据替换为2,双引号和单引号意义相同
data[data==”wap”]<-2
#将数据集中‘ios’数据替换为3
data[data==’ios’]<- 3
#将数据集中‘android’数据替换为4
data[data==’android’]<- 4
#将数据集中‘新手专享’数据替换为1
data[data==’新手专享’]<-1
#将数据集中‘直投散标’数据替换为2
data[data==’直投散标’]<-2
#将数据集中‘定期宝’数据替换为3
data[data==’定期宝’]<-3
#将数据集中‘双收计划’数据替换为4
data[data==’双收计划’]<-4
#将数据集中‘新手标’数据替换为5
data[data==’新手标’]<-5
#将数据集中‘register_time’列数据转换为时间格式
data$register_time<-as.Date(data$register_time)
#将数据集中‘first_invest_time’列数据转换为时间格式
data$first_invest_time<-as.Date(data$first_invest_time)
#将数据集整体转化为数据格式,方便后续做xgboost模型
data[] <- lapply(data, as.numeric) 
#将数据集中的时间变量转化为正数
data$register_time<-data$register_time+720000
data$first_invest_time<-data$first_invest_time+720000

data[1:10,]


    原文作者:goskiller
    原文地址: https://blog.csdn.net/qq_28887735/article/details/51955391
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞