3 つの異なる場所から複数日 (実際には 2 年間のデータ) にわたって 10 分ごとに測定された地表温度の時系列データのセットがあります。私が計算したいのは、各サイトの毎日の 60 分間隔の最大勾配 (温度上昇率) です。
したがって、基本的には、60 分のウィンドウで 1 日 10 分ずつ作業し、各ウィンドウの勾配を計算してから、最大勾配とそれがいつ発生したかを判断します。次に、この関数をデータセットの毎日に適用したいと思います。日付/時刻の形式は次のとおりです (%m/%d/%y %H:%M)。
この擬似コードのようなことをするために、ddplyとzooパッケージと関数rollapplyを使用して何かを想像しています
ddply(data, .(場所, 日), function(d) max(rollapply(slope(d$temp~d$time, data=d)))
ここで、「時間」は各日 (10 分ごと) 内の時間であり、「日」は単に日付であるため、関数はすべての日付に適用できます。明らかに、「勾配」は R 関数ではなく、実際の勾配を計算するために記述する必要があります。
Zoo と rollapply の経験が豊富な人、またはこの問題を解決する別の方法を考えられる人はいますか?
ここに単一の場所からのサンプルデータをいくつか含めました (したがって、場所の列は削除されています) https://gist.github.com/natemiller/42eaf45747f31a6ccf9a
助けてくれてありがとう、ネイト
編集:それ以来、geektraderのJoshua Ulrichの回答を以下から組み合わせて使用し、基本的な代数を使用して値を1時間あたりの℃の単位に変換しました
CperH<-dat$Temp-(dat$Temp/(1+dat$ROC))
うまくいきます。