在R中,如何绘制一天中的日历时间与日历日期

问题描述:

我很遗憾,在关于这个简单问题的互联网搜索时间被烧坏之后,我来这里发帖。在R中,如何绘制一天中的日历时间与日历日期

我有几个数据集绘制在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格式的时间:毫米或HH:MM。日期值显示为yyyy-mm-dd。

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

使用

plot(date,time) 

给出一个准确的外观图,但是y轴被标记为数字因子值(约0至90),而不是所期望的,在时间上排序的所述因子的水平变量。 x轴以所需的人可读格式标记。

我该如何解决这个问题? R中是否有“时间”格式可以将我的“时间”变量转换为?我随后也想对时间值进行算术运算,并且不介意在绘图时使用一列值和在数学中使用一列值。

我碰到了一些在R中操作(日期+时间)变量的例子,并将它们转换成不同的格式。我不相信这是我的问题,因为我有单独的时间和日期的字段,并且想要相互对立。

非常感谢您的建议,或者您对网络资源的指示(在我的位置没有适当的图书馆或书店)。

有可能是一个更简单的方法要做到这一点,但你总是可以自己贴上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也是一个很好的资源。

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

+0

谢谢您的建议。我看了一些我可以在ts上找到的东西(例如http://127.0.0.1:15268/library/stats/html/plot.ts.html,http://www.stat.pitt.edu/stoffer/tsa2 /R_time_series_quick_fix.htm)。我的印象是,这并没有解决我的问题,这基本上是如何让y轴标有一天的时间。 (数据似乎用plot()正确绘制,x轴用日历日期标记。)我仍然需要查看timeSeries以及“Related”发布中的许多软件包。我感谢你的建议。 – janus 2010-12-06 07:40:35

让我们假设你有两个载体,Date类的一个名为“DT”,另一个名为“以旧换新”的因素:

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" 
+0

具有单独的时间和日期变量是这个问题的一个组成部分,因为感兴趣的主题是调查不同事件的日期时间在日历年的过程中是如何变化的。我担心,尽管有能力将它们转换为POSIX,但我并没有把握将这两者结合为一个对象的价值。 – janus 2010-12-07 07:38:46

+0

而不是为时间对象创建自己的函数,一个存在我不知道的类,我认为你可以使用TimeDateClass来做一个在日期时间变量和截断到午夜的派生变量之间创建差异,或者创建和辅助将其所有日期部分重新分配到一个通用日期的变量。然后,您将能够使用内置的y轴标签的格式化功能。 – 2010-12-07 13:00:28