2016-07-01 3 views
2

Я немного смущен функцией "difftime". Когда я рассчитываю разницу во времени до 27 марта 2016 года, все в порядке. Но как только я пытаюсь 28, 29, 30 или 31 марта 2016, как представляется, проблема:R "diffftime" проявляет странное поведение

> 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, а затем добавить вручную количество дней "отсутствует", но мне было интересно, может быть, что-то не так с функцией ...? Я не очень понимаю, что я мог бы сделать неправильно, так как я просто изменил номер дня ...

ответ

1

Там нет никаких проблем, когда вы преобразовать его с 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 
+0

as.Date() работал как шарм. Большое спасибо! – user3270948

3

Причины дополнительный дня при переходе от 2016-03-27 к 2016-03-28 является 0.96 из-за переход на летнее время ног в:

0.96 = 23 hours/24 hours 

Прочитано this R Nabble blog, который подробно обсуждает эту проблему.

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