Pendiente máxima para un intervalo dado cada día.

Tengo un conjunto de datos de series de tiempo con temperaturas en la superficie del terreno medidas cada 10 minutos durante varios días (en realidad, 2 años de datos) desde tres ubicaciones diferentes. Lo que me interesa calcular es la pendiente máxima (tasa de aumento de temperatura) para cualquier intervalo de 60 minutos para cada día para cada sitio.

Básicamente, me gustaría trabajar cada día, 10 minutos a la vez, con una ventana de 60 minutos y calcular la pendiente para cada ventana, y luego determinar la pendiente máxima y cuándo ocurrió durante el día. Entonces me gustaría aplicar esta función a todos los días en el conjunto de datos. La fecha / hora está en el siguiente formato (% m /% d /% y% H:% M).

Estoy imaginando algo usando ddply y el paquete zoo y la función rollapply, para hacer algo como este pseudocódigo

ddply (datos,. (ubicación, día), función (d) max (rollapply (pendiente (d $ temp ~ d $ tiempo, datos = d)))

Donde "tiempo" es el tiempo dentro de cada día (cada 10 min) y "día" es simplemente la fecha para que la función se pueda aplicar en todas las fechas. Obviamente, "pendiente" no es una función R y debería escribirse para calcular pendientes reales.

¿Alguien tiene más experiencia con zoo y rollapply o puede pensar en otra forma de resolver este problema?

He incluido algunos datos de muestra aquí desde una única ubicación (por lo que la columna de ubicación se ha eliminado)https://gist.github.com/natemiller/42eaf45747f31a6ccf9a

Gracias por cualquier ayuda, Nate

EDITAR: Desde entonces he usado una combinación de las respuestas de Joshua Ulrich de geektrader desde abajo, y usé el álgebra básica para convertir los valores a unidades de ºC por hora.

    CperH<-dat$Temp-(dat$Temp/(1+dat$ROC))

Funciona bien.

Respuestas a la pregunta(1)

Su respuesta a la pregunta