码迷,mamicode.com
首页 > 编程语言 > 详细

R语言-时间刻度的转换

时间:2015-08-26 01:56:38      阅读:998      评论:0      收藏:0      [点我收藏+]

标签:r语言

一、问题

有个问题困扰了我很久。
我有下面数据,第一列是小时+分钟,第二列是数值:
0000      112
0001      123
0002      122
...
0059      123
0100      120
...
2359      156

请问怎么把这个绘制成分钟颗粒度的时间序列图?直接使用ggplot函数画出来的横轴会是数字,而不是时间。

二、解答

这个问题的本质实际上是要统一时间刻度,可以先把时间转换为小时单位或分钟单位,然后再作为坐标刻度。

1、假设有矩阵y:

> y
     x      x2                   
[1,] "0000" "0.861078206472926"  
[2,] "0001" "-0.0993158925503671"
[3,] "0011" "-0.227230172016484"
[4,] "1201" "0.0763049905510434"
[5,] "1203" "-1.64848265734858"  
[6,] "1409" "0.771992874036383"  
[7,] "1508" "0.111608655100976"  
[8,] "1520" "-1.09952899544323"  

x为小时+分钟字符串变量,x2为值。

2、进行时间转换

(1)转换为单位为分钟的时刻
> x1b<-round(as.numeric(substr(y[,1],1,2)) + as.numeric(substr(y[1,],3,4)) / 60,digits=2)
> plot(x1b,x2)
x1b为转换后的时间,x2为矩阵中的数值。

(2)转换为单位为小时的时刻
> x1c<-as.numeric(substr(y[,1],1,2))*60 + as.numeric(substr(y[1,],3,4))
> plot(x1c,x2)
x1c为转换后的时间,x2为矩阵中的数值。

通过绘图对比,两者的趋势和变化规律是完全一致的,只是时间轴的单位不同。
注意:如果观测值超过一天,则还要对天进行折算。

3、效果图

(1)小时为单位

技术分享

(2)分钟为单位

技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

R语言-时间刻度的转换

标签:r语言

原文地址:http://blog.csdn.net/hongweigg/article/details/47988613

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!