我的数据框如下所示:
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/