【发布时间】:2019-08-30 11:09:40
【问题描述】:
我有一个 66 棵树的年轮宽度矩阵。行代表测量的年份,列代表不同的树。
现在我想逐棵计算从一年到另一棵树的生长差异。我设法通过dplyr 中的“滞后”功能分别为每一列做到了这一点。为 66 列编写的代码很多,所以我正在寻找一种方法来一次为所有列执行此操作,但逐列。
我的“treegrowth”data.frame 如下所示:
year tree1 tree2 tree3 ...
1900 0.72 0.34 1.34
1901 0.56 0.88 0.98
1902 1.23 0.56 1.67
...
对于每棵树,我想将一年的值除以前一年的值,并将旧值与结果子集。
我可以像这样对每一列都这样做:
treegrowth$tree1 <- treegrowth$tree1 / lag(treegrowth$tree1)
但是我怎样才能一步完成所有树(列)的管理?
如果我忽略了'$tree1',就会发生一些奇怪的事情,但不是我想要的。
> dput(head(treegrowth))
structure(list(WA12M = c(NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), WA81M = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_), WA101M = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_), HA263M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), HA358M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), HA386M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), HA387M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), HA388M = c(0.73,
0.73, 0.84, 0.43, 0.67, 0.72), HA390M = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_), HA420M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), MI49M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), MI51M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), MI62M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), MI309M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO4M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO8M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO23M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO42M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO47M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO50M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), NO73M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA3M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA18M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA22M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA25M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA26M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA27M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA28M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA38M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA40M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA48M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA64M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA80M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA84M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA88M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA90M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA93M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA95M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA103M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA104M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA111M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA141M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA142M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA154M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA163M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA164M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA177M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA194M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA195M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA196M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA197M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA198M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA200M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA202M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA205M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA206M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA207M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA225M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA252M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA291M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA294M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA297M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA299M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA376M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA379M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), WA395M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), EI33M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), EI38M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), HA161M = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), row.names`c("1803",
"1804", "1805", "1806", "1807", "1808"), class = c("rwl", "data.frame"
))
【问题讨论】:
-
sapply(treegrowth[-1], function(x) x/lag(x))