年份 | 成本 | 出货数量 | 2000 | 63.01359 | 2270 |
---|---|---|
2001 | 61.64063 | 2558 |
2002 | 66.54081 | 3279 |
2003 | 64.02072 | 3656 |
2004 | 60.52792 | 3721 |
您可以使用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