我的数据框看起来像这样:
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和summaryrize函数获取正确的数据集。我需要能够检索给定年份,物种,面积和降雨类别的所有密度
任何帮助?
答案 0 :(得分:2)
在基础R中它就是这样的:
df$sumval <- tapply(df$density, list(df$year, df$area, df$species), sum )
df$perce <- df$density / df$sumval
但正如我在评论中所说,结果总是1,因为每年只有一个值。