R-从多列创建单个日期

时间:2012-03-21 21:39:08

标签: r

我希望我能为你们提出一个简单的问题,但是在R中使用日期对我来说是个难题

我有一个看起来像这样的时间序列数据

Month  Day  Year  Hour  Min  Sec Data
2       1    2012  1     0   0    56
2       1    2012  1     1   0    57
2       1    2012  1     2   0    52
2       1    2012  1     3   0    55
2       1    2012  1     4   0    57

我希望从多列创建一个日期,然后按日期绘制数据列。我绝望的过度简化的代码看起来像这样:

Date1<-c(Month,Day,Year,Hour,Min,Sec)# For when hourly data is important
Date2<-c(Month,Day,Year) #For when daily data is important
as.Date(Date1)
as.Date(Date2)
plot(Data~ Date1)

我知道它不起作用,但我希望它可以解决我想要完成的任务。 关于如何做到这一点的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:13)

您需要ISOdatetime()功能:

R> mytimes <- ISOdatetime(2012,1,2,1,2,c(3.123,3.456,3.789),tz="UTC")
R> mytimes
[1] "2012-01-02 01:02:03.122 UTC" "2012-01-02 01:02:03.456 UTC" 
[3] "2012-01-02 01:02:03.789 UTC"

这些是真正的POSIXct个对象:

R> diff(mytimes)
Time differences in secs
[1] 0.333 0.333
attr(,"tzone")
[1] "UTC"
R> 

我为这个例子让我的生活变得更轻松,只有一个参数被矢量化了。但是,如果您的数据位于变量mydf中,则可以执行

mytimes <- with(mydf, ISOdatetime(Year, Month, Day, Hour, Min, Sec))

你应该设置并准备好进行绘图。您还可以将mytimes列重新分配给原始data.frame