私はEPANLAデータセットを使用して、いくつかの湖のデータのエピリミニオンの平均気温を見つけています。データセットは次のようになります。
SITE DEPTH METALIMNION TEMP FIELD
1 0.0 NA 25.6
1 0.5 NA 25.1
1 0.8 T 24.9
1 1.0 NA 24.1
1 2.0 B 23.0
2 0.0 NA 29.0
2 0.5 T 28.0
「T」はエピリミニオンの終了を示し、各サイトの「T」以上の対応するすべての温度値を平均したいと思います。どこから始めればいいのかわからない。(「B」はこの問題には関係ありません)。ありがとう!
ベースRを使用すると、このように実行できます。
私はave
2回使用します。最初METALIMNION
は、の"T"
グループごとに、列の場所を判別するためですSITE
。これはベクトルg
です。
第二、平均METALIMNION
によってSITE
、そのベクターg
。
g <- with(NLA, ave(as.character(METALIMNION), SITE,
FUN = function(x) {
x[is.na(x)] <- ""
rev(cumsum(rev(x) == "T"))
}))
NLA$AVG <- ave(NLA$TEMP.FIELD, NLA$SITE, g)
NLA
# SITE DEPTH METALIMNION TEMP.FIELD AVG
#1 1 0.0 <NA> 25.6 25.20
#2 1 0.5 <NA> 25.1 25.20
#3 1 0.8 T 24.9 25.20
#4 1 1.0 <NA> 24.1 23.55
#5 1 2.0 B 23.0 23.55
#6 2 0.0 <NA> 29.0 28.50
#7 2 0.5 T 28.0 28.50
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加