我希望我能为你们提出一个简单的问题,但是在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)
我知道它不起作用,但我希望它可以解决我想要完成的任务。 关于如何做到这一点的任何想法?
提前致谢!
答案 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
。