代码之家  ›  专栏  ›  技术社区  ›  Sweepy Dodo

使用基R进行加窗(分区)%计算[重复]

  •  1
  • Sweepy Dodo  · 技术社区  · 7 年前

    df = data.frame(season = rep(seq(1,4),2)
                    ,product = c(rep('A', 4), rep('B', 4))
                    ,revenue = 1:8
                    )
    

    我希望将每个季度的收入计算为总收入的百分比(在每个产品的分区内),以便在结束表中创建以下列

    df$pc = c(0.1, 0.2, 0.3, 0.4, 0.19, 0.23, 0.27, 0.31)
    

    我知道这是可以实现的包,如 dplyr Summarizing by subgroup percentage in R 然而 ,挑战在于如何通过基本R函数或基本R函数与用户定义函数的组合来实现这一点。

    1 回复  |  直到 7 年前
        1
  •  1
  •   akrun    7 年前

    我们可以分组

    library(dplyr)
    df %>%
      group_by(product) %>% 
      mutate(pc = round(revenue/sum(revenue), 2))
    

    如果我们需要 base R ,使用 ave

    df$pc <- with(df, revenue/ave(revenue, product, FUN = sum))