Pregunta

Este es un problema que surge a menudo cuando estoy importando datos en bruto de los registradores de datos. Un registrador de temperatura se fija a registrar la temperatura cada diez minutos, y un registrador de gas separada se establece en gas registro usado en el último intervalo de diez minutos. Quiero combinar los datos de estos dos registradores en una sola trama de datos para el trazado y el análisis, pero los tiempos no están alineadas exactamente. Quiero tener una fila de la trama de datos para cada período de diez minutos, con la fecha y hora que muestra el comienzo del período de tiempo.

Las miradas de datos como registrador de temperatura:

           datetime temperature
2010-09-30 06:58:53 78.996
2010-09-30 07:08:53 78.645
2010-09-30 07:18:53 78.514
2010-09-30 07:28:53 79.173
2010-09-30 07:38:53 78.602

Las miradas datos del registrador de gas como:

           datetime gas
2010-09-30 13:45:00  0
2010-09-30 13:55:00  1
2010-09-30 14:05:00  0
2010-09-30 14:15:00  4
2010-09-30 14:25:00  2

quiero combinar las dos tramas de datos en intervalos de diez minutos, por lo que las miradas de datos combinados como:

           datetime temperature gas  
2010-09-30 13:40:00 NA          0
2010-09-30 13:50:00 78.996      1
2010-09-30 14:00:00 78.645      0
2010-09-30 14:10:00 78.514      4
2010-09-30 14:20:00 79.173      2
2010-09-30 07:38:53 78.602      NA

Aquí hay algo de código para obtener estas dos tramas de datos:

temps <- data.frame(datetime=c("2010-09-30 06:58:53",
"2010-09-30 07:08:53","2010-09-30 07:18:53",
"2010-09-30 07:28:53","2010-09-30 07:38:53"),
 temperature=c(78.996,78.645,78.514,79.173,78.602),
stringsAsFactors=FALSE)
temps$datetime <- strptime(temps$datetime, format="%Y-%m-%d %H:%M:%S")
gas <- data.frame(datetime=c("2010-09-30 13:45:00",
"2010-09-30 13:55:00","2010-09-30 14:05:00",
"2010-09-30 14:15:00","2010-09-30 14:25:00"),
gas=c(0,1,0,4,2),stringsAsFactors=FALSE)
gas$datetime <- strptime(temps$datetime, format="%Y-%m-%d %H:%M:%S")
¿Fue útil?

Solución

align.time en href="http://cran.r-project.org/package=xts"> XTS .

library(xts)
xTemps <- align.time(xts(temps[,2],as.POSIXct(temps[,1])), n=600)
xGas <- align.time(xts(gas[,2],as.POSIXct(gas[,1])), n=600)
merge(xTemps,xGas)
scroll top