r——数据框架中边际成本的计算


tbody> <<tr>
年份 成本 出货数量
200063.013592270
200161.640632558
200266.540813279
200364.020723656
200460.527923721

您可以使用lag来获取列的前一个值。

library(dplyr)
dat <- dat %>%
mutate(Marginal_Cost = (Cost-lag(Cost))/
(quantity_shipped - lag(quantity_shipped)))
dat
#  Year     Cost quantity_shipped Marginal_Cost
#1 2000 63.01359             2270            NA
#2 2001 61.64063             2558  -0.004767222
#3 2002 66.54081             3279   0.006796366
#4 2003 64.02072             3656  -0.006684589
#5 2004 60.52792             3721  -0.053735385

dat <- structure(list(Year = 2000:2004, Cost = c(63.01359, 61.64063, 
66.54081, 64.02072, 60.52792), quantity_shipped = c(2270L, 2558L, 
3279L, 3656L, 3721L)), row.names = c(NA, -5L), class = "data.frame")

一个可能的方法来解决你的问题:

library(dplyr)
df %>% 
mutate(Marginal_cost = c(NA, diff(Cost)/diff(quantity.shipped)))
Year     Cost quantity.shipped Marginal_cost
1 2000 63.01359             2270            NA
2 2001 61.64063             2558  -0.004767222
3 2002 66.54081             3279   0.006796366
4 2003 64.02072             3656  -0.006684589
5 2004 60.52792             3721  -0.053735385

最新更新