我一直在研究这个问题,似乎无法解决这个问题。
我有一个数据集显示在下面我希望对价格运行现金流敏感度。数据集将附加行,但我遇到的问题是使用具有唯一人工成本的不同价格并将它们与其唯一的工作站相匹配。
a <- data.frame(Name = "station1", units_sold = seq(2000, 3000, by = 2))
b <- data.frame(Name = "station2", units_sold = seq(1000, 2000, by = 2))
monthly_sales <- rbind(a, b)
price_1 <- c(2,3,4,5,6) #price for station_1
price_2 <- c(3,4,5,6,7) #price for station_2
labor1 <- c(1000) #labor for station_1
labor2 <- c(2000) #labor for station_2
我使用的是以下代码,我无法将price_1
和labor_1
应用于station_1
,然后将price_2
和labor_2
应用于{{ 1}}为了我的灵敏度。
如何设置station_2
功能或cf_model
功能以匹配独特的人工和价格参数?
任何帮助将不胜感激!
map
答案 0 :(得分:2)
很难弄清楚你想要做什么。 如果您对销售的商品,每件商品的价格和(总)人工成本有不同的假设,您想了解您将获得的净收入吗?
如果是这样的话,我认为最快捷的方式就像是。
scenario_station_1 <- data.frame(a$units_sold %*% t(price_1) - labor1)
names(scenario_station_1)<-as.character(price_1)
答案 1 :(得分:1)
我相信你要做的是使用map
和2个参数,即map2
。
在这种情况下,您的函数cf_model
将是一个函数,它接收两个参数,即price_1
和price_2
的参数;你永远不应该真的需要索引它。
在这个例子中,它将是:
cf_model <- function(price_1, price_2){
data.frame(Scenario = (a$units_sold*price_1 + b$units_sold*price_2))
}
sensitivity_model <- data.frame(map2(price_1, price_2, cf_model))
head(sensitivity_model)
注意我没有使用你的表monthly_sales
。如果我要使用它,那将是:
monthly_sales <- data.frame(station1=a$units_sold,
station2=b$units_sold)
sensitivity_model <- data.frame(map2(price_1, price_2,
~ list(Sensitivity=.x*monthly_sales$station1 + .y*monthly_sales$station2)))
在这两种情况下,它都具有相同的输出:
> head(sensitivity_model)
Scenario Scenario.1 Scenario.2 Scenario.3 Scenario.4
1 7000 10000 13000 16000 19000
2 7010 10014 13018 16022 19026
3 7020 10028 13036 16044 19052
4 7030 10042 13054 16066 19078
5 7040 10056 13072 16088 19104
6 7050 10070 13090 16110 19130