我有一组时间序列数据,其中包含从三个不同位置在多天内每 10 分钟测量一次的地表温度(实际上是 2 年的数据)。我感兴趣的是计算每个站点每天任意 60 分钟间隔的最大斜率(温度升高速率)。
因此,本质上我希望每天工作 10 分钟,有 60 分钟的窗口,并计算每个窗口的斜率,然后确定最大斜率及其在一天中发生的时间。然后我想将此函数应用于数据集中的每一天。日期/时间采用以下格式 (%m/%d/%y %H:%M)。
我正在想象使用 ddply 和 Zoo 包和函数 rollapply 来执行类似伪代码的操作
ddply(数据, .(位置, 天), 函数(d) max(rollapply(坡度(d$温度~d$时间, 数据=d)))
其中“时间”是每天(每 10 分钟)内的时间,“天”只是日期,因此该函数可以应用于所有日期。显然,“斜率”不是 R 函数,必须编写它来计算实际斜率。
有谁对 Zoo 和 rollapply 有更多经验,或者可以想出另一种方法来解决这个问题?
我在此处包含了来自单个位置的一些示例数据(因此位置列已被删除)https://gist.github.com/natemiller/42eaf45747f31a6ccf9a https://gist.github.com/natemiller/42eaf45747f31a6ccf9a
感谢您的任何帮助,
内特
编辑:此后,我结合使用了下面的 geektrader 的 Joshua Ulrich 的答案,并使用基本代数将值转换回每小时 ℃ 的单位
CperH<-dat$Temp-(dat$Temp/(1+dat$ROC))
效果很好。