R "difftime" демонстрирует странное поведение
Меня немного смущает функция "difftime". Когда я вычисляю разницу во времени до 27 марта 2016 года, все в порядке. Но как только я попробую 28, 29, 30 или 31 марта 2016 года, мне кажется, что возникает проблема:
> difftime("2016-03-27","1979-01-01", units="days")
Time difference of 13600 days
> difftime("2016-03-28","1979-01-01", units="days")
Time difference of 13600.96 days
> difftime("2016-03-31","1979-01-01", units="days")
Time difference of 13603.96 days
Я могу обойти эту проблему, установив дату на 27 марта 2016 года, а затем вручную добавив количество дней, "пропавших без вести", но мне было интересно, возможно, что-то не так с функцией...? Я действительно не понимаю, что я мог сделать неправильно, так как я просто изменил номер дня...
2 ответа
Нет проблем, когда вы конвертируете его as.Date
:
difftime(as.Date("2016-03-28"), as.Date("1979-01-01"), units="days")
# Time difference of 13601 days
Также нет проблем с lubridate
:
library(lubridate)
difftime(ymd("2016-03-28"), ymd("1979-01-01"), units="days")
# Time difference of 13601 days
Причина лишний день в пути от 2016-03-27
в 2016-03-28
является 0.96
из-за перехода на летнее время:
0.96 = 23 hours / 24 hours
Прочитайте этот блог R Nabble, в котором подробно обсуждается эта проблема.