2016-03-16 16 views
0

表我有兩個表 - Price_listorder_listprice_list表格爲我提供了所有product_id所有商店的有效日期的所有價格。雖然order_list給我的訂單列表,即誰下了訂單和從哪個商店。加盟R或Python的

PRICE_LIST - 日期,PRODUCT_ID,STORE_ID,selling_price

order_list - 日期,PRODUCT_ID,STORE_ID,selling_price,ORDER_ID,電子郵件,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的解決方案。得到這個工作的步驟是(一)在特定日期對在PRICE_LIST(C)的product_order_id搜索所有條目每個PRODUCT_ID選擇product_order_id(B)追加這一個表,並添加一列指定product_order_id此列表適用於(d )重複下一個product_order_id的步驟。一旦數據框準備就緒,我可以在列(product_order_id)上留下join order_list表以獲得最終的數據框。我還沒能掌握如何做到這一點的R.


閱讀環路和一些幫助,我能夠創建一個循環搜索了一天每個的product_id所有的價格條目後(product_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。所以,如果任何人都可以幫助我,我應該如何循環以及在同一時間添加另一列,這將幫助我很多。

回答

0

這將保留所有的行,每PRODUCT_ID

library(dplyr) 
order_list_joined<-full_join(Price_list,order_list,by="product_id") 

那麼如果沒有ORDER_ID對於一個給定的product_id,我們假設沒有訂單的地方。

order_list_joined<-order_list_joined %>% mutate(Placed = ifelse(is.na(order_id),"No","Yes") 
+0

我不認爲左聯接會工作。這隻會告訴我訂單所在商店的細節。除了成功訂購商店的訂單清單之外,我還希望可以爲每個訂單ID放置訂單的商店列表。 –

+0

對不起,如果我誤解了,是否想要爲每個product_order_id顯示另一個表中存在的價格列表,其中加入兩個表的元素是product_id? – adaien

+0

是......正是......什麼都知道所有的可能性。此外價格每天都在變化,所以它的product_id和「日期」相結合。 –