【问题标题】:Join Tables in R or Python [duplicate]在 R 或 Python 中加入表 [重复]
【发布时间】:2016-03-16 11:02:29
【问题描述】:

我有两张桌子-Price_listorder_listprice_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


    【解决方案1】:

    这将保留每个 product_id 的所有行

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

    如果给定的 product_id 没有 order_id,我们假设没有订单。

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

    【讨论】:

    • 我不认为左连接会起作用。这只会给我下订单的商店的详细信息。除了成功下订单的商店列表之外,我还想要一个可以为每个 order_id 下订单的商店列表。
    • 对不起,如果我误解了,您是否希望为每个 product_order_id 提供另一个表中存在的价格列表,其中连接两个表的元素是 product_id?
    • 是的......确切地说......知道所有的可能性。此外,价格每天都在变化,因此它的 product_id 和“日期”结合在一起。
    • 编辑应该是诀窍。如果没有,请从您的两个数据库中发布一些示例行,以便我更好地理解
    • 如果每个产品有一个订单,外部联接将起作用...但是在这里我们可能有来自不同用户的多个订单相同的产品。我共享的数据类似于原始数据。为了更好地理解,我还做了一些编辑。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多