r - 使用 dplyr 总结自定义函数

标签 r statistics dplyr

我的数据框如下所示:

row     year    rainfall area species density rainfall1
1   46  1993    433.70  br  red 2.9300000   low
2   47  1994    365.65  br  red 8.0000000   low
3   48  1996    545.80  br  red 5.8558559   high
4   49  1999    785.40  br  red 17.0158617  high
5   50  2000    736.30  br  red 8.8778409   high
6   51  2001    370.40  br  red 6.9874901   low
7   52  2002    174.80  br  red 2.0579308   low
8   53  2003    290.50  br  red 7.6328655   low
9   54  2004    424.40  br  red 7.4234908   low
10  55  2005    336.30  br  red 0.7580045   low
11  56  2007    524.40  br  red 0.4500000   high

此重复操作会导致 4 个区域和 2 个物种产生 120 个结果。

我想添加一个新列,其中包含该地区/物种当年的相对密度(以百分比表示)。我编写了一个小函数来获取相对密度:

relative <- function(x) (x/sum(x)) * 100

我不确定如何获取正确的数据集来使用 group_by 和 summarize 函数来解决这个问题。我需要能够检索给定年份、物种、面积和降雨类别的所有密度

有什么帮助吗?

最佳答案

在基础 R 中,它是这样的:

df$sumval <- tapply(df$density, list(df$year, df$area, df$species), sum )
df$perce <- df$density / df$sumval

但正如我在评论中所说,结果始终为 1,因为每年只有一个值。

关于r - 使用 dplyr 总结自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586714/

相关文章:

用 map 替换 for 循环?

r - R 中带有 polr 的 Stargazer 错误

r - 找到 r 中第 n 个最小值的列

r - 在ts中使用日期字段?

file - Perforce:fstat 中 "Action"和 "HeadAction"之间的区别?

statistics - 为什么交互属性可以提高线性回归的性能

r - 如何在不丢失属性的情况下从data.frame删除行

r - 如何在 dplyr::across() 中使用 n() 按组计算行数?

r:除了循环似乎别无选择的情况

r - 在 R 中计算每个周期的方差