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

R语言如何计算数据框列表列按订单ID的乘积和(订单小计)

R语言list列逐行计算订单小计的实现方法

核心逻辑为逐行提取对应订单的数量向量、价格向量,计算乘积后求和即可得到订单小计,以下是两种可直接落地的实现方案:

前置测试数据构造

先基于你给出的示例构造带list列的标准数据框:

# 加载依赖包,未安装可先运行 install.packages("tidyverse")
library(tidyverse)

# 构造数量、价格两个list向量
quantity <- list(
  a = c(1,2,3),
  b = 1:2,
  c = c(3,1)
)
price <- list(
  P1 = c(12,13,4),
  P2 = c(2,4),
  P3 = c(12,1)
)

# 生成目标数据框
order_df <- tibble(
  Order = names(quantity),
  Quantity = quantity,
  Price = price
)

方法1:rowwise逐行处理(易读性优先)

适合中小数据量,语法直观易理解:

order_df <- order_df %>%
  rowwise() %>% # 按行分组
  mutate(Subtotal = sum(Quantity * Price)) %>% # 逐行计算乘积和
  ungroup() # 处理完成后取消行分组,避免影响后续操作

方法2:map2迭代处理(性能优先)

适合十万行以上的大数据量场景,执行效率更高:

order_df <- order_df %>%
  mutate(Subtotal = map2_dbl(Quantity, Price, ~ sum(.x * .y)))

map2_dbl会并行迭代Quantity和Price两个list列的对应元素,计算完成后直接返回数值型的小计列。

两种方案运行后,查看order_df$Subtotal即可得到预期结果 50 10 37。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:54:03