【发布时间】:2019-03-13 09:09:35
【问题描述】:
我在下面有一组数据,其中显示了一家假想的汽车经销商的汽车数量。 'current_price' 变量显然是汽车当前设定的售价。 'minimum_price' 变量显示汽车在任何情况下都不得出售的硬底价格。 (可以假定为购买价格)。
我正在尝试创建一个函数,用户可以在其中选择数据库中的汽车子集(使用如下所述的“用户定义的参数”),然后将“Current_Price”减少或增加一个百分比或英镑 (£) 值。
“最低利润参数”设置所有汽车的最低利润。在此示例中,它们已设置为 10 英镑和 10%。这意味着每辆车的利润必须为 10 英镑或当前价格的 10% - 以较大者为准。
价格变化参数设置价格要移动多少以及应该向上还是向下移动。
# Dummy data
Type <- rep(c("Car", "Van"),each=3)
Age <- as.numeric(c(2, 2, 5, 4, 8,1))
Colour <- c("Red", "Red", "Yellow", "Red", "Black", "Red")
Make <- c("Ford", "VW", "VW", "VW", "BMW", "Ford")
Current_Price <- as.numeric(c(1050, 1000, 1500, 995, 2200, 2100))
Minimum_Price <- as.numeric(c(900, 600, 500, 850, 1900, 1950))
df1 <- data.frame(Type, Age, Colour, Make, Current_Price, Minimum_Price)
# User defined parameters - price to be changed for all cars which fit below selection
Input_Type <- "Car"
Input_Min_Age <- 2 # All cars this age and above
Input_Max_Age <- 10 # All cars this age and below
Input_Colour <- "Red"
Input_Make <- c("Ford", "VW")
# Minimum profit parameters
Input_Min_Pounds <- 10
Input_Min_Percentage <- 0.10
# Price change parameters
Input_Change_Type <- "Percentage" # "Percentage" or "Pound"
Input_Change_Value <- -0.10 # "-" sign to represent price reduction
鉴于上述情况,我预计第 1 行和第 2 行会受到更改的影响。 1 号线的价格应从 1,050 英镑降至 1,000 英镑。这是因为 1000 英镑是可能的最低价格,其中 10% 的价格是利润 (900/(1-0.10) = 1000)。
第 2 行的价格应该只是下降 10% 至 900。
有没有人知道如何将它放入一个函数中,对于不习惯使用 R 的人来说,使用该函数相当直观?
【问题讨论】:
-
只是为了确定您的要求:“使用如下所述的'用户定义的参数'”是否意味着查询参数始终相同,只有参数值是不同的?还是您期望一个完全灵活的“查询引擎”?
-
嗨@RYoda。如果您有一个只允许输入 1 个参数的解决方案,那将是理想的。 (因此,如果未定义“颜色”参数,则假定所有颜色都会受到更改的影响)。
-
您如何定义“直观易用”(对于没有经验的 R 用户)?我可以假设用户知道数据列的名称(以便函数可以使用
...参数)吗?或者我可以假设像 RStudio 这样的良好智能支持,以便用户可以看到允许的参数? -
可以使用
data.table(工作速度更快,代码更精简)还是坚持使用data.frame解决方案? -
顺便说一句(恕我直言):请不要将多个问题/问题组合成一个单一的 SO 问题,以保持最小的可重复示例和尽可能简单的答案。您的问题结合了三个独立的问题:1. 定价逻辑,2. 过滤逻辑,3. 可用性(针对非 R 用户)。