【问题标题】:Function for measuring change compared to year zero测量与零年相比变化的功能
【发布时间】:2021-11-28 16:36:31
【问题描述】:

我在 R 中有一个数据框,其中有一列表示“低”、“中”和“高”,有一列表示年份(2019 年、2020 年或 2021 年),平均值如下。与第一年(2019 年)(又名 2020-2019 年和 2021-2020 年)相比,我想按级别查找变化。我正在使用函数:df %>% group_by(level) %>%arrange(year) %>% mutate(growth_rate = average / lag(average))。但是,使用此功能,2021 年与 2020 年进行了比较。有没有一种我想念的简单方法来做到这一点?

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

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以直接使用which.min 执行此操作,即在按“级别”分组后,将“平均值”除以minimum“年份”上的“平均值”

    library(dplyr)
    df %>%
        group_by(level) %>%
        mutate(growth_rate = average/average[which.min(year)])
    

    【讨论】:

      【解决方案2】:

      试试这个:

      df %>%
         group_by(level) %>% 
         arrange(year) %>% 
         mutate(growth_rate = average / first(average))
      

      另外,您可以在控制台中输入dput(<your data here>) 并将其粘贴到您的问题中吗?它将帮助其他人复制和粘贴您正在使用的数据框。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多