2016-07-01 15 views
2

Ich bin ein wenig durch die Funktion "difftime" verwirrt. Wenn ich den Zeitunterschied bis zum 27. März 2016 kalkuliere ist alles in Ordnung. Aber sobald ich 28 versuchen, 29, 30 oder 31. März 2016 scheint es ein Problem zu sein:R "difftime" zeigt seltsames Verhalten

> 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 

ich kann, indem das Datum 27, um dieses Problem zu bekommen März 2016 und dann manuell hinzufügen, die Anzahl der Tage "fehlen", aber ich habe mich gefragt, ob da vielleicht etwas mit der Funktion nicht stimmt ...? Ich weiß nicht wirklich sehen, was ich falsch gemacht haben könnte, da ich nur die Tag-Nummer geändert ...

Antwort

1

Es ist kein Problem, wenn man es mit as.Date konvertieren:

difftime(as.Date("2016-03-28"), as.Date("1979-01-01"), units="days") 

# Time difference of 13601 days 

Auch gibt es kein Problem mit lubridate:

library(lubridate) 
difftime(ymd("2016-03-28"), ymd("1979-01-01"), units="days") 

# Time difference of 13601 days 
+0

as.Date() arbeitete wie ein Charme. Danke vielmals! – user3270948

3

Der Grund, einen zusätzlichen Tag in 2016-03-27-2016-03-28 gehen ist 0.96 zu Sommerzeit zurückzuführen ist, treten in:

Lesen Sie this R Nabble blog, die dieses Problem im Detail diskutiert.