如何在R语言中按照分级折扣规则计算商品的最终售价?
你可以使用R中dplyr包的case_when函数实现区间匹配计算,完整实现代码如下:
1. 加载依赖包
library(dplyr)
2. 构造原始数据集
df <- tribble( ~product_id, ~price, '123', 35, '445', 98, '654', 194, '135', 2000, '156', 10, )
3. 计算折扣率和最终价格
df_result <- df %>% mutate( # 按给定规则逐行匹配折扣率,case_when会按顺序返回第一个符合条件的对应值 discount_rate = case_when( price < 10 ~ 3, price >= 10 & price < 20 ~ 5, price >= 20 & price < 30 ~ 7, price >= 30 & price < 90 ~ 10, price >= 90 & price < 190 ~ 20, price >= 190 & price < 2000 ~ 30, price >= 2000 ~ 50 ), # 套用给定公式计算最终售价 final_price = price * (100 - discount_rate) / 100 )
运行后得到的df_result和你要求的输出结果完全一致。如果后续需要调整价格区间或者折扣率,直接修改case_when里的对应规则即可。
内容的提问来源于stack exchange,提问作者datazang
相关产品推荐
相关产品推荐

