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

如何按年份计算各销售数据占当年总销售额的百分比?

计算各公司销售额占对应年份总销售额的百分比

首先修正你现有代码里的拼写和语法错误:

  • 变量名拼写错误:NAame 应该改为 Name
  • 年份总销售额的聚合语法错误,正确写法应为从聚合后的DF中按年份汇总销售额,或者直接从原数据计算

下面提供几种实现占比计算的方案:

方案一:Base R 原生方法

  1. 先计算每年的总销售额
  2. 将原数据与年份总销售额合并
  3. 计算占比并转换为百分比格式
# 修正后的聚合代码(按年份+公司汇总销售额)
DF <- aggregate(Sales ~ Year + Name, data = sales, FUN = sum)

# 计算每年的总销售额
year_total <- aggregate(Sales ~ Year, data = DF, FUN = sum)
names(year_total)[2] <- "Year_Total"  # 重命名列,方便后续合并

# 合并数据并计算占比
DF_with_pct <- merge(DF, year_total, by = "Year")
DF_with_pct$Sales_Pct <- (DF_with_pct$Sales / DF_with_pct$Year_Total) * 100

# 查看结果
print(DF_with_pct)

方案二:使用dplyr包(更简洁直观)

如果习惯用管道式操作,dplyr的分组计算会更高效:

library(dplyr)

DF_with_pct <- sales %>%
  group_by(Year, Name) %>%
  summarise(Sales = sum(Sales), .groups = "drop_last") %>%  # 先按年份+公司汇总销售额
  mutate(Sales_Pct = (Sales / sum(Sales)) * 100) %>%  # 按年份分组计算占比
  ungroup()

# 查看结果
print(DF_with_pct)

方案三:使用data.table包(大数据场景更高效)

处理大规模数据集时,data.table的性能更优:

library(data.table)

sales_dt <- as.data.table(sales)
DF_with_pct <- sales_dt[, .(Sales = sum(Sales)), by = .(Year, Name)][
  , Sales_Pct := (Sales / sum(Sales)) * 100, by = Year
]

# 查看结果
print(DF_with_pct)

运行任意一种方案后,你都会得到包含Sales_Pct列的结果,该列即为各公司销售额占对应年份总销售额的百分比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:06