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

R语言按年份条件计算列值求和及占比的技术问题

解决按年计算交易总量及骑手类别占比的问题

原代码的问题分析

你写的代码报错主要有三个原因:

  1. 代码末尾缺少闭合的右括号,导致语法不完整
  2. Year列是数值型数据(2021、2022为数字),不需要加双引号包裹"2021"
  3. 数据框索引写法错误,正确的列索引应该用列名或位置,你当前的写法会把列值当作索引,逻辑完全错误

两种可行的解决方法

方法一:基础R实现

先计算每年的交易总量,再推导各骑手类别的占比:

# 假设你的数据框名为Transactions_per_Year
# 计算每年总交易量
year_totals <- tapply(Transactions_per_Year$yearly_transactions, Transactions_per_Year$Year, sum)

# 新增总交易量和占比列
Transactions_per_Year$total_yearly <- year_totals[as.character(Transactions_per_Year$Year)]
Transactions_per_Year$proportion <- Transactions_per_Year$yearly_transactions / Transactions_per_Year$total_yearly

方法二:tidyverse(dplyr)实现(更适配tibble,代码更简洁)

通过分组计算一步完成需求:

library(dplyr)

Transactions_per_Year <- Transactions_per_Year %>%
  group_by(Year) %>%
  mutate(
    total_yearly = sum(yearly_transactions),
    proportion = yearly_transactions / total_yearly
  ) %>%
  ungroup()

最终输出结果

运行后你的tibble会新增total_yearly(当年交易总量)和proportion(该类别占当年总量的比例)两列,结果示例:

# A tibble: 4 × 5
   Year Rider_Class yearly_transactions total_yearly proportion
  <dbl> <chr>                     <int>        <int>      <dbl>
1  2021 casual                  2528702      5594499     0.452 
2  2021 member                  3065797      5594499     0.548 
3  2022 casual                  2321824      5667286     0.410 
4  2022 member                  3345462      5667286     0.590

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:47:26