从多列创建单个日期

问题描述 投票:0回答:1

我希望我有一个简单的问题要问大家,但是在 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)

我知道这行不通,但我希望它能明白我想要实现的目标。 关于如何做到这一点有什么想法吗?

r
1个回答
15
投票

您想要

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

© www.soinside.com 2019 - 2024. All rights reserved.