我有一组时间序列数据,其中地面温度每隔10分钟从三个不同的位置测量多天(实际上是2年的数据) . 我感兴趣的是计算每个站点每天60分钟间隔的最大斜率(温度升高速率) .
所以基本上我想每天工作10分钟,每次60分钟,并计算每个窗口的坡度,然后确定最大坡度以及白天发生的时间 . 然后,我想将此函数应用于数据集中的每一天 . 日期/时间采用以下格式(%m /%d /%y%H:%M) .
我正在想象使用ddply和动物园包和函数rollapply,做类似这样的伪代码
ddply(数据, . (位置,日),函数(d)max(rollapply(斜率(d $ temp~d $ time,data = d)))
“时间”是每天(每10分钟)的时间,“日”只是日期,因此可以在所有日期应用该功能 . 显然,“斜率”不是R函数,必须编写以计算实际斜率 .
有没有人有更多的动物园和rollapply的经验或可以想到另一种方法来解决这个问题?
我在这里从一个位置包含了一些示例数据(因此位置列已被删除)https://gist.github.com/natemiller/42eaf45747f31a6ccf9a
谢谢你的帮助,Nate
编辑:我从那时起使用了geektrader的Joshua Ulrich的答案,并使用基本代数将值转换回每小时ºC的单位
CperH<-dat$Temp-(dat$Temp/(1+dat$ROC))
效果很好 .
1 回答
您可以使用
xts
timeseries包,这对时间序列分析非常有用 . 结合TTR
包,您可以轻松获得您想要的东西 .