【发布时间】:2015-07-23 11:58:52
【问题描述】:
我的数据框如下所示:
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 和 summarise 函数获取正确的数据集。我需要能够检索给定年份、物种、面积和降雨类别的所有密度
有什么帮助吗?
【问题讨论】:
-
提供的数据只有一个
area,而且每年只有一个值,很难提供一个例子,因为如果你按年份汇总并除以年份总和,你总是得到1。 -
您的问题看起来像assignment,也许不是。要计算示例数据集中鸢尾花的相对 Sepal.Length,您可以执行
iris2 <- iris %>% group_by(Species) %>% mutate(rel = Sepal.Length/sum(Sepal.Length)*100) -
@Paul4forest 谢谢!我意识到这是使用 mutate 和我需要的正确分组的组合
-
如果您找到了答案,请将其发布,最好使用reproducible code 并将其标记为已接受。
标签: r statistics dplyr