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

如何在R语言中计算Data Frame的边际成本?

在R中计算边际成本的解决方案

原始数据

YearCostquantity shipped
200063.013592270
200161.640632558
200266.540813279
200364.020723656
200460.527923721

需求说明

需新增Marginal cost列,计算规则为:

  • 2000年值为0
  • 其余年份按公式:**(当年成本 - 上年成本)/(当年发货量 - 上年发货量)**计算,结果保留5位小数

方法1:基础R实现(无需额外包)

# 构造数据框
df <- data.frame(
  Year = c(2000, 2001, 2002, 2003, 2004),
  Cost = c(63.01359, 61.64063, 66.54081, 64.02072, 60.52792),
  quantity_shipped = c(2270, 2558, 3279, 3656, 3721)
)

# 计算边际成本:diff()获取相邻行差值,首行补0
marginal_cost <- c(0, diff(df$Cost) / diff(df$quantity_shipped))

# 添加列并保留5位小数
df$Marginal_cost <- round(marginal_cost, 5)

# 输出结果
print(df)

运行后结果:

YearCostquantity_shippedMarginal_cost
200063.0135922700.00000
200161.640632558-0.00476
200266.5408132790.00680
200364.020723656-0.00669
200460.527923721-0.05374

方法2:dplyr包实现(管道式操作更直观)

如果习惯使用tidyverse生态,用lag()函数直接引用上一行数据:

library(dplyr)

# 构造数据框
df <- data.frame(
  Year = c(2000, 2001, 2002, 2003, 2004),
  Cost = c(63.01359, 61.64063, 66.54081, 64.02072, 60.52792),
  quantity_shipped = c(2270, 2558, 3279, 3656, 3721)
)

# 计算并添加边际成本列
df <- df %>%
  mutate(
    Marginal_cost = case_when(
      Year == 2000 ~ 0,
      TRUE ~ (Cost - lag(Cost)) / (quantity_shipped - lag(quantity_shipped))
    ) %>% round(5)
  )

# 输出结果
print(df)

两种方法最终结果完全一致,可根据个人习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:50:21