2010-07-11 34 views
8

Tôi mới dùng stackoverflow và khá mới đối với R nhưng đã tìm kiếm dài và khó và không thể tìm thấy câu trả lời cho câu hỏi sau.Làm cách nào để thay đổi chuỗi thời gian (XTS hoặc ZOO) trong R?

Tôi có một số tệp dữ liệu có nhiệt độ theo chuỗi thời gian. Tôi đang nhập CSV dưới dạng đối tượng ZOO sau đó chuyển sang XTS. Một tệp chính xác trông giống như thế này, với các bài đọc về giờ và giờ rưỡi:

>head(master1) 
         S_1 
2010-03-03 00:00:00 2.8520 
2010-03-03 00:30:00 2.6945 
2010-03-03 01:00:00 2.5685 
2010-03-03 01:30:00 2.3800 
2010-03-03 02:00:00 2.2225 
2010-03-03 02:30:00 2.0650 

Nhưng giá trị thời gian trên một số hơi lệch - tức là 23:59:00 không phải 00:00:00 hoặc 00: 29:00 thay vì 00:30:00.

>head(master21) 
         S_21 
2010-03-04 23:59:00 -0.593 
2010-03-05 00:29:00 -0.908 
2010-03-05 00:59:00 -1.034 
2010-03-05 01:29:00 -1.223 
2010-03-05 01:59:00 -1.349 
2010-03-05 02:29:00 -1.538 

Tôi muốn sửa các chuỗi thời gian này vì chênh lệch phút không quan trọng đối với phân tích của tôi và cuối cùng tôi muốn hợp nhất các tệp, vì vậy mỗi lần cần phải có cùng thời gian.

Tôi muốn có lệnh chỉ có thể nói "chuyển chuỗi thời gian về trước 1 phút, nhưng không thay đổi cột dữ liệu (ví dụ: S_21). Tôi đã có một số may mắn với gsub() về những thay đổi dễ dàng hơn, và dự tính regex phức tạp để thay đổi dữ liệu trước khi nó được chuyển đổi thành ZOO hoặc XTS.Tôi đã đọc về lag()diff() nhưng dường như chúng di chuyển các giá trị dữ liệu liên quan đến chuỗi thời gian; giải quyết vấn đề này sẽ được nhiều người đánh giá cao.

Trả lời

10

Hãy thử

index(master21) <- index(master21) + 60 # adds a minute 

sẽ thêm một phút vào chỉ mục thời gian. Sau đó, bạn có thể sử dụng merge() làm các dấu thời gian căn chỉnh.

Nói chung, các họa tiết của gói zoo cũng sẽ hữu ích cho bạn.

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