R语言关于时间格式转化为数值的解决方案
2016-07-19 14:15
447 查看
好了,在前一篇文章中,我们将数据集转化为numeric格式,以便于在实际工作中预测投资者是否再次投资。
不过上次的数据集转化,将时间格式全部转化为了NA,导致预测准确率下降了约5%(因为失去了时间早晚这个维度),我们今天就来讲一下如何将数据集中的时间变量转化为numeric格式。
首先我们先回忆一下将时间变量转化为numeric格式的难点:
因为读入数据集的时候,所有数据都是以factor格式存储,如果直接用as.numeric函数转化时间,会发生一个奇特的现象——时间顺序被打乱,我这边数据集的情况如下:
直接使用as.numeric函数转化时间,出现下图:
请问它的规律在哪里?!恕我眼拙,看了半天没明白它转化为数值的主要逻辑,不得已,我只有回去继续找可能实现的路径。
后来知道factor型变量直接转化为数值会出现这样的问题,那么我不用factor变量转化,先用character变量转化再转化为numeric行么?尝试如下:
、
使用as.character函数转化没有问题,但是再进行as.numeric函数转化就出现问题了!具体如下:
所有时间变量全变成了NA!你大爷的!那我辛辛苦苦转化时间变量为了啥?!
好,从头再来!这次我总结了教训,决定先把时间变量以时间的形式存储起来,然后再来进行as.numeric函数转化,看看会不会出现问题?尝试如下:
上面的函数直接使用as.date就行,接下来我们看看是否能使用as.numeric函数转化(因为我们的主要目的是保存时间变量的先后顺序,而不是绝对值,所以这里我们没有考虑绝对时间的对错问题),如下图:
大家可以看到,时序是正确的,如果不清楚,我在数值上加上720000就看的很清楚了!如下图:
好了,这样就可以知道,距离我们越近的时间,数值越大,这个变量就能精准的表达时间远近了!到此为止,这个数据集的基础清洗就完毕了!附上我的部分代码:
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,]
不过上次的数据集转化,将时间格式全部转化为了NA,导致预测准确率下降了约5%(因为失去了时间早晚这个维度),我们今天就来讲一下如何将数据集中的时间变量转化为numeric格式。
首先我们先回忆一下将时间变量转化为numeric格式的难点:
因为读入数据集的时候,所有数据都是以factor格式存储,如果直接用as.numeric函数转化时间,会发生一个奇特的现象——时间顺序被打乱,我这边数据集的情况如下:
直接使用as.numeric函数转化时间,出现下图:
请问它的规律在哪里?!恕我眼拙,看了半天没明白它转化为数值的主要逻辑,不得已,我只有回去继续找可能实现的路径。
后来知道factor型变量直接转化为数值会出现这样的问题,那么我不用factor变量转化,先用character变量转化再转化为numeric行么?尝试如下:
、
使用as.character函数转化没有问题,但是再进行as.numeric函数转化就出现问题了!具体如下:
所有时间变量全变成了NA!你大爷的!那我辛辛苦苦转化时间变量为了啥?!
好,从头再来!这次我总结了教训,决定先把时间变量以时间的形式存储起来,然后再来进行as.numeric函数转化,看看会不会出现问题?尝试如下:
上面的函数直接使用as.date就行,接下来我们看看是否能使用as.numeric函数转化(因为我们的主要目的是保存时间变量的先后顺序,而不是绝对值,所以这里我们没有考虑绝对时间的对错问题),如下图:
大家可以看到,时序是正确的,如果不清楚,我在数值上加上720000就看的很清楚了!如下图:
好了,这样就可以知道,距离我们越近的时间,数值越大,这个变量就能精准的表达时间远近了!到此为止,这个数据集的基础清洗就完毕了!附上我的部分代码:
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,]
相关文章推荐
- 斐波那契数列
- android系统源码分析——binder基础数据结构
- 农业垂直搜索引擎三》爬虫机器人模块的设计与实现
- Android开发技术周报 Issue#52
- Android开发技术周报 Issue#53
- SQL2008中Merge的用法
- <img>元素底部为何有空白?
- Memcached安装与启用
- Memcached安装与启用
- mycat 路由转发过程原理深度解析
- 使用信号量Semaphore循环打印ABC
- Cannot update paths and switch to branch at the same time
- Android按键事件传递流程(二)
- js中的键盘事件:onkeydown、onkeypress、onkeyup
- 5分钟实战获取1000条锚文本外链技巧
- 晒晒成绩单~监理工程师
- iOS动效学习-推荐资料(最全)
- 使用 gulp 搭建前端环境之 ionic 项目实践总结
- centos6.5安装配置zabbix3.0.3
- js-undefinde的一点延伸