按优先级将生产库存分配给订单的R语言实现方案问询
按优先级将生产库存分配给订单的R语言实现方案问询
各位R语言大佬好!我遇到了一个库存分配的业务需求,想请大家帮忙出出主意:
我有两张数据表:
- 一张是生产库存表:记录了不同生产地点的对应产品库存数量,生产地点是有优先级顺序的(从A到E依次往后)
- 另一张是订单表:记录了买家的订单信息,包含订购的产品和数量,并且订单已经按优先级排好序了
我的需求是:按照生产地点的优先级顺序,把同产品的库存优先分配给前面的订单——先把第一个生产地点的库存尽可能满足订单,用完之后再用第二个地点的,以此类推。最终要得到每个订单是从哪些生产地点调取了多少库存来满足的(不用严格和我示例的格式一致,核心信息到位就行)。
先给大家展示我的测试数据:
生产库存表生成代码及内容
set.seed(595) prod <- data.frame('local' = LETTERS[1:5], 'qtd' = sample(1:10, 5), 'product' = sample(1:3, 5, replace = T))
生成后的prod表:
| local | qtd | product |
|---|---|---|
| A | 4 | 2 |
| B | 8 | 2 |
| C | 3 | 1 |
| D | 5 | 3 |
| E | 2 | 3 |
订单表生成代码及内容
set.seed(596) ord <- data.frame('buyer' = sample(1:15, 15), 'qtd' = sample(1:6, 15, replace = T), 'product' = sample(1:3, 15, replace = T))
(注:修正了原数据的排版错误,正确的ord表内容如下)
| buyer | qtd | product |
|---|---|---|
| 1 | 3 | 3 |
| 2 | 2 | 2 |
| 3 | 1 | 3 |
| 4 | 1 | 1 |
| 5 | 3 | 3 |
| 6 | 4 | 1 |
| 7 | 5 | 2 |
| 8 | 2 | 3 |
| 9 | 6 | 2 |
| 10 | 2 | 3 |
| 11 | 1 | 3 |
| 12 | 4 | 2 |
| 13 | 2 | 3 |
| 14 | 6 | 3 |
| 15 | 6 | 3 |
期望的结果示例
我想要得到类似下面这样的结果(格式灵活,核心是每个订单对应的供货地点及数量):
| buyer | qtd | product | local | qtd2 |
|---|---|---|---|---|
| 1 | 3 | 3 | D | 3 |
| 2 | 2 | 2 | A | 2 |
| 3 | 1 | 3 | D | 1 |
| 4 | 1 | 1 | C | 1 |
| 5 | 3 | 3 | D,E | 1,2 |
| 6 | 4 | 1 | C | 3(剩余1未满足) |
| ... | ... | ... | ... | ... |
有没有大佬能帮忙实现这个逻辑的R代码呀?谢谢大家!
备注:内容来源于stack exchange,提问作者Marcelo Rodrigues
相关产品推荐
相关产品推荐

