Opened 8 years ago
Last modified 8 years ago
#1946 new defect
Incongruencias en la función Serie del paquete R tolBasis para fechas iguales o anteriores a 1970
Reported by: | Víctor de Buen Remiro | Owned by: | Jorge |
---|---|---|---|
Priority: | normal | Milestone: | API nativa de acceso a R |
Component: | R API | Version: | 3.4 |
Severity: | normal | Keywords: | |
Cc: | jsperez |
Description
He encontrado algunas incongruencias en la función Serie del paquete R tolBasis para fechas iguales o anteriores a 1970.
Por ejemplo, si se quiere crear una serie mensual que empiece en febrero de 1970 no hay problema
require(tolBasis) s <- Serie(c(1:10),Monthly,as.Date('1970-02-01')) print(s)
1970-02-01 1 1970-03-01 2 1970-04-01 3 1970-05-01 4 1970-06-01 5 1970-07-01 6 1970-08-01 7 1970-09-01 8 1970-10-01 9 1970-11-01 10
Sin embargo si se quiere empezar en enero de 1970, la desplaza un mes hacia adelante y empieza en febrero de nuevo:
s <- Serie(c(1:10),Monthly,as.Date('1970-01-01')) print(s)
1970-02-01 1 1970-03-01 2 1970-04-01 3 1970-05-01 4 1970-06-01 5 1970-07-01 6 1970-08-01 7 1970-09-01 8 1970-10-01 9 1970-11-01 10
En cambio, si se construye una serie diaria con el mismo origen lo hace bien
s <- Serie(c(1:10),Daily,as.Date('1970-01-01')) print(s)
1970-01-01 1 1970-01-02 2 1970-01-03 3 1970-01-04 4 1970-01-05 5 1970-01-06 6 1970-01-07 7 1970-01-08 8 1970-01-09 9 1970-01-10 10
Change History (2)
comment:1 Changed 8 years ago by
comment:2 Changed 8 years ago by
Parece ser que el problema acaba descansando en la función fit_to_timeline
que falla al adecuar una fecha anterior a 1970 que presenta décimas de segundo.
Véase el siguiente ejemplo:
a0 <- as.POSIXlt("1969-12-31 23:59:55.9", "GMT") fit_to_timeline(a0, "POSIXct", F)==fit_to_timeline(a0, "POSIXlt", F) # -> F a0 <- as.POSIXlt("1979-12-31 23:59:55.9", "GMT") fit_to_timeline(a0, "POSIXct", F)==fit_to_timeline(a0, "POSIXlt", F) # -> T
Para solucionar esto e independizar algo más tolBasis
podría ser interesante prescindir de lubridate
e implementar nuestras propias funciones de redondeo en fechados, etc. Sobre todo si aceptamos prescindir definitivamente de los instantes más finos que la fecha en el tratamiento de fechados y series temporales.
Es fallo del paquete de R
lubridate
en el que nos apoyamos:Lo revisaré para ver qué pasa e intentar solucionarlo.