2012-03-21 38 views
7

Tôi hy vọng tôi có một câu hỏi đơn giản cho tất cả các bạn, nhưng làm việc với ngày tháng trong R đã là một khó khăn đối với tôiR- Tạo một ngày duy nhất từ ​​nhiều cột

Tôi có một dữ liệu chuỗi thời gian mà trông như thế này

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 

Hy vọng của tôi là tạo một ngày từ nhiều cột và sau đó vẽ cột Dữ liệu theo ngày. Mã đơn giản vô vọng của tôi sẽ trông giống như sau:

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) 

Tôi biết nó không hoạt động, nhưng tôi hy vọng nó có thể vượt qua những gì tôi đang muốn hoàn thành. Bất kỳ ý tưởng nào về cách người ta có thể thực hiện việc này?

Cảm ơn trước!

Trả lời

11

Bạn muốn ISOdatetime() chức năng:

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" 

Và đây là những thực POSIXct đối tượng:

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

tôi làm cho cuộc sống của tôi dễ dàng ở đây ví dụ và có chỉ là một lập luận vectorised. Nhưng với dữ liệu của bạn trong biến số mydf, giả sử bạn có thể làm

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

và bạn phải được đặt và sẵn sàng để vẽ. Bạn cũng có thể gán lại cột mytimes cho số data.frame gốc.

+0

Cảm ơn Dirk- bạn đá! Làm việc như một sự quyến rũ – Vinterwoo

Các vấn đề liên quan