如何在R中绘制时间与日历日期的关系

时间:2010-12-06 06:19:45

标签: r time format plot

我很遗憾因为这个简单的问题在互联网搜索时间被烧毁后我来这里发帖。

我在R中绘制了几个数据集,每个数据集由两列数据组成:时间,日期。我通过Rgui在Windows计算机上使用R 2.11.0。

时间是观察事件的“时间”。例如,它被认为是:

Factor w/ 87 levels "5:53","5:54",..: 84 85 85 85 86 ...

日期是日历日期,标识为:

Class 'Date'  num [1:730] 13879 13880 13881 13882 13883 ...

时间值以24小时制,h:mm或hh:mm的格式记录。日期值显示为yyyy-mm-dd。

我想绘制时间(y轴)与日期(x轴)的关系。

使用

plot(date,time)

给出了精确的图,但是y轴被标记为数值因子值(大约0到90),而不是因子变量的期望的,时间上有序的水平。 x轴以所需的人类可读格式标记。

我该如何纠正? R中是否存在“时间”格式,我可以将“时间”变量转换为?我随后也想对时间值进行算术运算,并且不介意必须携带一列值用于绘图和一列数学值。

我在网上遇到了几个在R中操纵(日期+时间)变量的例子,并将它们转换成不同的格式。我不相信这是我的问题,因为我有时间和日期的单独字段,并希望将一个字段与另一个字段进行对比。

我提前感谢您的建议或您对网络资源的指示(我所在地没有合适的图书馆或书店)。

3 个答案:

答案 0 :(得分:1)

可能有一种更简单的方法,但您可以自己标记y轴。调整下面的ticksAt向量,找到适合您数据的内容。

Data <- data.frame(date=Sys.Date()+1:10,time=paste(5,41:50,sep=":"))
with(Data, plot(date,time,yaxt="n"))
ticksAt <- c(1,3,5,7,9)
axis(2, at=ticksAt, labels=as.character(Data$time)[ticksAt])

?plot.zoo有一些很好的例子,说明如何创建漂亮的轴注释,尽管其中一些可能是特定于动物园的。 ?par也是一个很好的资源。

答案 1 :(得分:0)

ts和timeSeries是两个不错的选择 请查看
Related

答案 2 :(得分:0)

假设您有两个向量,一个名为“dt”的Date类,另一个名为“tm”的因子:

 x <- paste(as.character(dt[1:2]), as.character(tm))
 strptime(x, "%Y-%m-%d %H:%M")
## [1] "2008-01-01 05:53:00" "2008-01-02 05:54:00"
class(strptime(x, "%Y-%m-%d %H:%M"))
##  [1] "POSIXt"  "POSIXlt"