【问题标题】:Finding the growth rate of averages over several years by level in r在 r 中按级别查找几年内的平均增长率
【发布时间】:2021-07-27 18:37:44
【问题描述】:

我在 r 中有一个数据框,其中有一列表示“低”、“中”和“高”,有一列表示年份(2019 年、2020 年或 2021 年),平均值如下。我想找到三年内各个级别的增长率(例如 2019-2021 年低地块的增长率)。有没有办法在不创建新数据框的情况下做到这一点?

数据框:

level year average
Low 2019 1300
Low 2020 2966
Low 2021 4049
Mid 2019 2065
Mid 2020 4723
Mid 2021 5915
High 2019 2194
High 2020 4827
High 2021 5978

【问题讨论】:

  • 欢迎来到 SO。请阅读:stackoverflow.com/help/how-to-ask
  • 您能否举例说明您的数据是什么样的以及您的首选输出是什么样的?根据您在问题中提出的内容,您似乎只是在寻找 3 个数字。
  • 我添加了我正在查看的数据框,每个级别我想要2个数字,2019年到2020年的增长率和2020年到2021年的增长率,所以总共六个数字
  • 看起来您的输出可能会驻留在新的数据框中。

标签: r


【解决方案1】:

您可以group_by() 级别并使用lag()

library(dplyr)

df %>% group_by(level) %>% arrange(year) %>% mutate(growth_rate = avarage / lag(avarage))

【讨论】:

  • 那为什么不在mutate()之前arrange(year)呢?
  • 我可以做到,@Greg。我只是认为没有必要,因为提供的数据已经排序。但我同意排序会更加一致。按建议编辑
猜你喜欢
  • 2021-04-30
  • 2019-05-19
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2015-06-20
  • 1970-01-01
相关资源
最近更新 更多