R-从多列创建单个日期

Vin*_*woo 7 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
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

我知道它不起作用,但我希望它可以解决我想要实现的目标.关于如何做到这一点的任何想法?

提前谢谢!

Dir*_*tel 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"
Run Code Online (Sandbox Code Playgroud)

这些是真实的POSIXct对象:

R> diff(mytimes)
Time differences in secs
[1] 0.333 0.333
attr(,"tzone")
[1] "UTC"
R> 
Run Code Online (Sandbox Code Playgroud)

我为这个例子让我的生活变得更轻松,只有一个参数被矢量化了.但是,如果您将数据放在变量中mydf,那么您可以这样做

mytimes <- with(mydf, ISOdatetime(Year, Month, Day, Hour, Min, Sec))
Run Code Online (Sandbox Code Playgroud)

你应该准备好并准备好进行策划.您也可以将mytimes列重新分配给原始列data.frame.