我是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
Run Code Online (Sandbox Code Playgroud)
所以,我需要计算的平均值是:
Tree1: mean(1997-2006) = 105.01
Tree2: mean(1992-2001) = 67.15
Tree3: mean(1989-1998) = 152.98
Run Code Online (Sandbox Code Playgroud)
由于我需要为大量树执行此操作,因此使用自动计算方法会很有帮助.非常感谢您的帮助!凯蒂
A5C*_*2T1 11
您可以使用sapply和tail一起使用na.omit如下:
sapply(mydf[-1], function(x) mean(tail(na.omit(x), 10)))
# Tree1 Tree2 Tree3
# 105.017 67.152 152.976
Run Code Online (Sandbox Code Playgroud)
mydf[-1]说放弃第一列.tail有一个参数,n可以让你从数据的结尾(尾部)指定你想要的值.在这里,我们将其设置为"10",因为您需要最后10个值.然后,假设NA在树生存期间实际数据中没有值,您可以安全地使用na.omit您的数据.
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |