¿Cómo represento y fusiono marcos de datos de series temporales con un *rango de fechas* en R?
Estoy trabajando en R
y tengo datos de series de tiempo en los que el tiempo relevante es un rango de fechas — es decir, cada fila tiene tanto una fecha de inicio como una fecha de fin, y el registro especifica los resultados durante ese período. Me gustaría poder representar este objeto de manera apropiada en R
y combinarlo con otras series de tiempo que tienen fechas específicas. En el caso de la fusión, me gustaría que cada registro de mi primera serie de tiempo (la que utiliza un rango de fechas) se empareje con una fecha que caiga dentro del rango, con criterios adecuados para desempatar en el caso de que haya dos o más fechas específicas que caigan dentro del rango. Aquí hay un ejemplo simple de lo que quiero que haga utilizando datos ficticios:
# Serie de tiempo con un rango de fechas
TIME.SERIES1
Inicio Fin Valor
2018-01-01 2018-01-31 80.6
2018-02-01 2018-02-28 140.5
2018-03-01 2018-03-31 122.1
2018-04-01 2018-04-30 108.5
2018-05-01 2018-05-31 96.0
2018-06-01 2018-06-30 103.3
# Serie de tiempo utilizando fechas específicas
TIME.SERIES2
Fecha Personal
2018-01-15 551
2018-02-14 606
2018-05-18 640
2018-06-02 635
2018-07-15 633
# Combinarlos utilizando una unión izquierda de TIME.SERIES1 y TIME.SERIES2
[algún comando de combinación]
Inicio Fin Valor Personal
2018-01-01 2018-01-31 80.6 551
2018-02-01 2018-02-28 140.5 606
2018-03-01 2018-03-31 122.1 NA
2018-04-01 2018-04-30 108.5 NA
2018-05-01 2018-05-31 96.0 640
2018-06-01 2018-06-30 103.3 635
Sé que se puede hacer este tipo de combinación fácilmente en SQL
, pero no estoy seguro de cómo hacerlo en R
. Anteriormente he utilizado el paquete xls
para análisis de series de tiempo, pero no sé si puede lograr lo que quiero hacer. Este paquete parece permitirme especificar una sola fecha como índice, pero no un rango de fechas. Del mismo modo, parece permitirme combinar dos objetos de series de tiempo en una fecha única, pero no estoy seguro de cómo combinar en función de un rango de fechas (como se muestra arriba).
Preguntas: ¿Puede el sistema de series de tiempo en R
manejar un objeto donde el índice de tiempo es un rango de fechas en lugar de una fecha específica (es decir, se puede tener un índice compuesto por una hora de inicio y una hora de fin)? ¿Cómo fusionamos datos con un rango de fechas en comparación con una fecha con fechas individuales?
davy.ai
Sí, las funciones de series temporales en
R
pueden manejar un objeto donde el índice de tiempo es un rango de fechas. Una forma de representar esto enR
es utilizando el paquetexts
, que permite la creación de datos de series temporales con intervalos irregulares. En este caso, el objeto de series temporales se puede representar como una serie de valores indexados por un intervalo de tiempo, que consta de una fecha de inicio y una fecha de finalización.Aquí tienes un ejemplo de código para crear un objeto
xts
con un índice de rango de fechas:Para fusionar un objeto de series temporales con un rango de fechas en un objeto de series temporales con fechas individuales, podemos utilizar la función
merge
del paquetexts
. El truco consiste en crear un nuevo objeto de series temporales con la misma fecha que el objeto de fechas individuales, pero con un rango que abarque solo esa fecha. Esto nos permitirá fusionar los dos objetos de series temporales utilizando las fechas de inicio y fin del objeto de rango de fechas como clave. Aquí tienes un ejemplo de código para fusionar los dos objetos de series temporales en el formato de nuestros datos simulados:El objeto
ts_fusionadas
resultante debería tener el mismo formato que el dato fusionado en el ejemplo de datos simulados proporcionado en la pregunta.