You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言按年份分组计算营收百分比结构的实现方法

R按年份分组计算收入百分比结构实现方案

原代码中prop.table(df$Revenues)的计算逻辑是对全量收入数据求全局占比,没有按年份拆分计算,要实现按年度单独统计各年的百分比结构,可直接用以下两种方案实现,计算结果和原数据框行顺序完全匹配,可直接用于后续图表绘制。


方案1:原生R实现(无需安装额外包)

用base R自带的ave()分组计算函数即可,先修正原代码中残留的冗余文本number of factor,再替换占比计算逻辑:

# 构造测试数据
df<-data.frame(
  Years = rep(2010:2020,len=22),
  Stores = rep(c("Store1","Store2","Store3"),22),
  Revenues = rep(c(200,400,100),22)
)
    
df$Years<-as.factor(df$Years)
df$color <- factor(df$Revenues, labels = c("cyan", "green","darkviolet"))

# 按年份分组计算单年度内各门店收入占比
df$Pct <- ave(df$Revenues, df$Years, FUN = function(x) prop.table(x))

ave()会自动按指定的Years字段拆分收入数据,对每个年份的收入子集单独执行占比计算,最后按原数据的行顺序拼接结果,不会出现行错位问题。


方案2:dplyr分组实现(代码可读性更高)

如果日常用tidyverse生态的函数,可以用分组mutate实现,逻辑更直观:

library(dplyr)

df <- df %>%
  group_by(Years) %>% # 指定按年份分组
  mutate(Pct = prop.table(Revenues)) %>% # 组内计算占比
  ungroup() # 取消分组,避免后续操作受分组逻辑影响

结果校验

计算完成后可任意抽取某一年的Pct列求和,结果恒为1,即符合年度百分比结构的计算要求。以测试数据中固定的收入值为例,单年度内三家门店收入总和为700,对应占比分别为:

  • Store1:200/700 ≈ 28.57%
  • Store2:400/700 ≈ 57.14%
  • Store3:100/700 ≈ 14.29%
    计算结果可直接传入ggplot2等绘图包绘制堆叠百分比柱状图、饼图等结构类图表。

内容的提问来源于stack exchange,提问作者silent_hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:03:28