【发布时间】:2016-03-16 11:02:29
【问题描述】:
我有两张桌子-Price_list 和order_list。 price_list 表为我提供了product_id 的所有商店的所有有效价格。而order_list 给了我下订单的列表,即谁下的订单以及来自哪个商店。
Price_list - 日期、product_id、store_id、selling_price
order_list - 日期、product_id、store_id、selling_price、order_id、email、product_order_id(唯一键 - product_id 和 order_id 的连接,因为一个订单中可能有多个产品)
我想以这样一种方式组合上述两个表,以便对于每个product_order_id,我都会获得该产品所有可用价格的列表。基本上我想看看可用的价格是多少以及客户选择了什么。下表说明了我的查询。
|product_order_id Date product_id store_id selling_price Placed|
|134323_3545 2016/03/11 134323 6433 2560.00 Yes |
|134323_3545 2016/03/11 134323 6343 2534.00 No |
|134323_3545 2016/03/11 134323 1243 2313.00 No |
|134323_3545 2016/03/11 134323 2424 2354.00 No |
|145565_9965 2016/03/11 145565 9887 5432.00 No |
|145565_9965 2016/03/11 145565 7645 5321.00 Yes |
我无法在 R 中解决这个问题。虽然我更喜欢 R,但如果 mysql 或 python 中有解决方案,我是开放的。完成此操作的步骤是 (a) 在该日期为 product_order_id 中的每个 product_id 选择 product_order_id (B) 搜索 price_list 中的所有条目 (C) 将其附加到表中并添加一个列指定 product_order_id 此列表适用于 (d ) 对下一个 product_order_id 重复这些步骤。准备好数据框后,我可以在列(product_order_id)上加入 order_list 表以获取最终数据框。我还没有掌握如何在 R 中做到这一点。
在阅读了循环和一些帮助之后,我能够创建一个循环来搜索一天中每个 product_id 的所有价格条目(product_date 是 date 和 product_id 的串联):
datalist <- list()
for(i in (orderlisit_test$product_date){
dat <- filter(pricelist, pricelist$product_date==i)
datalist[[i]] <- dat
}
big_data = do.call("rbind", datalist)
但是,我还想添加另一列,为每次迭代指定 order_id 或 product_order_id。因此,如果有人可以帮助我了解我应该如何循环以及同时添加另一列,那将对我有很大帮助。
【问题讨论】:
标签: r loops for-loop join dataframe