¿Cuál es la mejor manera de obtener el período de tiempo representado por interval
en lubridate
, en unidades especificadas? Todo lo que puedo imaginar es algo así como lo siguiente desordenado:Longitud del intervalo lubridate
> ival
[1] 2011-01-01 03:00:46 -- 2011-10-21 18:33:44
> difftime(attr(ival, "start") + as.numeric(ival), attr(ival, "start"), 'days')
Time difference of 293.6479 days
(que también añade esto como una solicitud de función en https://github.com/hadley/lubridate/issues/105, bajo el supuesto de que no hay mejor manera disponible - pero tal vez alguien aquí sabe de uno.)
Actualización - Al parecer, la función difftime
tampoco lo hace. Aquí hay un ejemplo.
> (d1 <- as.POSIXct("2011-03-12 12:00:00", 'America/Chicago'))
[1] "2011-03-12 12:00:00 CST"
> (d2 <- d1 + days(1)) # Gives desired result
[1] "2011-03-13 12:00:00 CDT"
> (i2 <- d2 - d1)
[1] 2011-03-12 12:00:00 -- 2011-03-13 12:00:00
> difftime(attr(i2, "start") + as.numeric(i2), attr(i2, "start"), 'days')
Time difference of 23 hours
Como menciono a continuación, creo que una buena manera de manejar esto sería para implementar una función /.interval
que no lo hace primero en arrojar su entrada a un period
.
Usted dice que desea un intervalo en una unidad en particular, pero por el contexto de los comentarios a continuación, parece que desea redondearlo a la unidad completa más cercana. Si es así, ¿puedes editar más para que quede claro? –
No, no quiero que sea redondeado. Tal vez las ediciones que acabo de hacer ayudan a aclarar? –