r语言 - 修改聚合函数以在植被分析表中工作的解决方案



我正在研究一个植被指标数据集,我已经成功地使用聚合函数来获取每个站点的信息。例如我用

aggregate(Tree ~ ID, data=Calc_height_treesVI, FUN=mean)
从一个图位置("

ID")内的一组子图获取平均树高度("树")。由于每个图有超过 10,000 条线和可变的高度,因此创建一个具有每个绘图位置平均树高度的新对象非常有用。

现在我想做同样的事情来获得每棵树的乳房高度 (DBH) 测量直径。因为许多树可能有多个树干,所以每个人有多个 DBH 条目。有一个公式可以获得每个人的胸径。它涉及获得所有树干茎的平方和的平方根。举个例子:

+------+----+-----+

|剧情 |编号 |胸径 |

+------+----+-----+

| 1 |一 |5.4 |

| 1 |一 |4 |

| 1 |一 |3.9 |

| 1 |一 |3.7 |

| 1 |乙 |4.3 |

| 1 |乙 |3 |

| 1 |乙 |3.5 |

+------+----+-----+

通过手动,您会得到物种 A 个体的 DBH 在运行公式后具有 8.60 的 DBH。因为有多个条目(具有可变数量的词干),我想用 R 来做到这一点。但是我还没有成功地直接应用适当的公式。我找到了一个解决方案,但它需要多个步骤。在这里,我分享步骤:

DBH_individualsII$sqr <-(DBH_individualsII$DBH)^2 ##This squares each DBH and it creates the new column with that value "sqr"
DBH.add=aggregate(sqr~Id, data=DBH_individualsII, FUN=sum)##add the squared DBH by groups in this case the individual species
DBH.final=sqrt(DBH.sums.perind$sqr)##Make the final calculation by taking the square root of the added squared stems original DBHs

我的问题是,有没有更有效的方法?此外,是否有植被分析包考虑了多茎胸径的计算?到目前为止,我已经尝试通读"素食主义者"和"ade4"但没有成功,但也许我看起来不够努力。

感谢您的关注和耐心,希望这也可以帮助其他人处理植被数据。

您可以在

aggregate中指定匿名函数:

# Create some sample data
set.seed(1)
data <- data.frame(Id = rep(1:4,each=4), DBH = sample(1:16))
# Run aggregate with anonymous function
aggregate(DBH ~ Id, data=data, FUN=function(x) sqrt(sum(x^2)))
  Id      DBH
1  1 16.91153
2  2 21.33073
3  3 15.81139
4  4 22.47221

最新更新