2012-03-21 48 views
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 

我希望從多列中創建一個日期,然後按日期繪製數據列。我hopelessy過於簡單的代碼應該是這樣的:

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) 

我知道這是行不通的,但我希望它可以跨越的我在尋找什麼來完成得到點。 關於如何去做這件事的任何想法?

提前致謝!

回答

11

你想要的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

+0

謝謝德克 - 你搖滾!奇蹟般有效 – Vinterwoo 2012-03-21 22:14:16