Mam lubridateinterval
i chciałem uzyskać liczbę dni jako liczbę całkowitą. Jednak otrzymuję następujące dziwne wyniki pośrednie:Dlaczego 365 dni to 80000 lat?
library("lubridate")
i1 <- interval("2015-01-01 00:00:00", "2016-01-01 00:00:00")
i1 <- interval(ymd_hms("2015-01-01 00:00:00"), ymd_hms("2016-01-01 00:00:00")) # Gives the same result
duration(i1)
# [1] "31536000s (~365 days)"
duration(i1, units = "days")
# [1] "2724710400000s (~86340.86 years)"
Oto dwa robocze skróty. Ten ostatni wyrzuca komunikat „Zmuszanie interwał czasu trwania” (i nie wiem powód, że ...)
> as.numeric(as.duration(i1), units = "days")
[1] 365
> as.numeric(i1, units = 'days')
(R wersja 3.3.0 z dnia 03.05.2016, lubridate wersji 1.5. 6.)
Bez znajomości 'r' w ogóle, mogę powiedzieć, że istnieją 86,400 sekundy/dzień, i zgaduj, że uzyskujesz jakąś podwójną konwersję. –
Czas trwania zapisuje dane jako sekundy dla spójności. Używaj okresów, które są bardziej elastyczne w odniesieniu do jednostek: 'p1 <- as.period (i1, unit = 'days'); p1; dzień (p1) '. Zauważ, że 365 dni i 1 rok niekoniecznie są tożsame ze względu na lata przestępne, i lubridate zostało zbudowane z myślą o tym. – alistaire