2016-10-04 26 views
5

tôi có số lượng lớn các ngày trong định dạng này:Làm thế nào tôi có thể thêm thời gian phân số trong R?

dt = as.POSIXct("2004-04-02 12:45:00 UTC") 

Và tôi phải thêm/bớt con số mà không phải lúc nào cả numbers.I đang sử dụng thư viện lubridate.

Ví dụ:

dt - days(2) 
[1] "2004-03-31 12:45:00 UTC" 

Nhưng,

dt - days(1.5) 
Error in validObject(.Object) : 
    invalid class “Period” object: periods must have integer values 

Có một sự thay thế cho hoạt động này?

+0

Câu hỏi hay. Nếu chỉ có R có chức năng ngày/thời gian khác ngoài lubridate. –

Trả lời

7

Lỗi xảy ra với days(1.5), không cho phép phân đoạn thời gian. Bạn có thể làm:

dt - days(1) - hours(12) 

hoặc

dt - 1.5*24*3600 

hoặc có lẽ là một chức năng cập nhật cơ sở mà kẻ như @DirkEddelbuettel biết về điều đó sẽ làm việc cũng có. Ah, nó là difftime (Tôi không làm việc với những ngày đủ để nhớ những điều này ra khỏi đỉnh đầu của tôi).

dt - as.difftime(1.5, units="days") 

Và, như đã chỉ ra bởi @maximusdooku:

dt - ddays(1.5) 

(Dựa trên mã này, nó trông giống như ddays chỉ trả về số giây trong khoảng thời gian yêu cầu, cộng với một số thông tin lớp.)

+0

Rất tốt được thực hiện :) –

+0

Cảm ơn. Tôi cũng đã phát hiện ra những ngày và những ngày dài. dt - ddays (1.5) – maximusdooku

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