0

30 分値を持つ大規模な気象データ セットがあります。ddply 関数を使用して毎日の値 (平均、合計など) を作成していますが、最小値と最大値の取得で問題が発生しています! 気温などの一部の値については、毎日の平均値、最小値、最大値を抽出したいのですが、返されたデータ フレームから平均値と同じ最小値と最大値が得られます。誰かが私が書いたコマンドを見て、エラーを見つけられるかどうかを確認できますか?

HFTda <- ddply (HFT, .(Year, DOY),summarise, 
                Temp = mean (Temp, na.rm = F), 
                Tmax = max (Temp, na.rm = F),
                Tmin = min (Temp, na.rm = F),
                RHmax = max (RH.x, na.rm = F), 
                RHmin = min (RH.x, na.rm = F),
                VPD = mean (VPD.x, na.rm = F), 
                Grad = mean (GradInc2, na.rm = F), 
                Gex = mean (Gex, na.rm = F),
                Prec = sum (Prec, na.rm = F), 
                H = mean (HFill, na.rm = F), 
                LE = mean (LEFill, na.rm = F), 
                NEE = mean (co2_fluxFill, na.rm = F), 
                ET = mean (h2o_fluxFill, na.rm = F), 
                SWout = mean (YB5214h, na.rm = F))
4

1 に答える 1

4

再現可能な例がないにもかかわらず、私には考えがあると思います。temp問題は、最小値と最大値を取得しようとする前に、平均値を取得している (そして値をローカルに上書きしている) ことだと思います。

予選:

d <- data.frame(day=rep(1:2,each=4),Temp=1:8)
library(plyr)

簡略化した例:

ddply(d, .(day), summarise,
   Temp = mean (Temp),
   minTemp = min(Temp))
 ##   day Temp minTemp
 ## 1   1  2.5     2.5
 ## 2   2  6.5     6.5

最も簡単な回避策は、順序を変更することです。

 ddply(d, .(day), summarise,
   minTemp = min(Temp),
   Temp = mean (Temp))
##   day minTemp Temp
## 1   1       1  2.5
## 2   2       5  6.5

代わりに (おそらくより良い) 平均変数を次のように参照することができますmeanTemp...

http://r4stats.com/2013/01/22/comparing-transformation-styles/summariseは関連しています(明らかにmutate-style 評価を行います)

于 2013-09-13T11:11:38.540 に答える