2016-10-04 2 views
5

У меня есть большое количество дат в этом формате:Как добавить дробные числа в R?

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

И я должен добавить/вычесть числа, которые не всегда могут быть всем numbers.I я использует библиотеку lubridate.

Пример:

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

Но

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

Есть ли альтернатива для этой операции?

+0

Хороший вопрос. Если только у R были другие функции даты/времени, кроме lubridate. –

ответ

7

Ошибка возникает с days(1.5), что не допускает дробных периодов. Вы можете сделать:

dt - days(1) - hours(12) 

или

dt - 1.5*24*3600 

или есть, вероятно, функция даты база, ребята, как @DirkEddelbuettel знают о том, что будет работать также. Ах, это difftime (Я не работаю с датами, чтобы запомнить эти вещи с головы).

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

И, как отметил @maximusdooku:

dt - ddays(1.5) 

(на основе кода, он выглядит как ddays просто возвращает количество секунд, в указанный период времени, а также некоторую информацию о классе.)

+0

Очень хорошо сделано :) –

+0

Спасибо. Я также обнаружил ddays и dminutes. dt - ddays (1.5) – maximusdooku

Смежные вопросы