3

私はRが初めてで、これについて理解するのに苦労しています。枯れ木からの木の成長率に関するデータを年別に整理しています。最初の列は年で、右側の列は個々の木の成長率で、それぞれの木が枯れた年で終わります。木が枯れた後、データセット内の残りの年の値は「NA」です。各木が枯れる前の 10 年間の平均成長を求める必要がありますが、各木は別の年に枯れました。誰もこれを行う方法について考えを持っていますか? データセットがどのように見えるかの例を次に示します。

Year    Tree1   Tree2   Tree3
1989    53.00   84.58   102.52
1990    63.68   133.16  146.07
1991    90.37   103.10  233.58
1992    149.24  127.61  245.69
1993    96.20   54.78   417.96
1994    230.64  60.92   125.31
1995    150.81  60.98   100.43
1996    124.25  42.73   75.43
1997    173.42  67.20   50.34
1998    119.60  73.40   32.43
1999    179.97  61.24   NA
2000    114.88  67.43   NA
2001    82.23   55.23   NA
2002    49.40   NA  NA
2003    93.46   NA  NA
2004    104.67  NA  NA
2005    44.14   NA  NA
2006    88.40   NA  NA

したがって、計算する必要がある平均は次のとおりです。

Tree1: mean(1997-2006) = 105.01
Tree2: mean(1992-2001) = 67.15
Tree3: mean(1989-1998) = 152.98

多数の木に対してこれを行う必要があるため、計算を自動化する方法があると便利です。助けてくれてありがとう!ケイティ

4

1 に答える 1

11

sapplyandを次のようにtail一緒に使用できます。na.omit

sapply(mydf[-1], function(x) mean(tail(na.omit(x), 10)))
#   Tree1   Tree2   Tree3 
# 105.017  67.152 152.976 

mydf[-1]最初の列を削除するように指示します。tailには引数 があり、データの末尾(末尾)nから必要な値の数を指定できます。ここでは、最後の 10 個の値が必要なため、「10」に設定しています。次に、ツリーが生きている間に実際のデータに値がないと仮定すると、データに対して安全に使用できます。NAna.omit

于 2012-12-19T16:41:18.663 に答える