努力学习R,但似乎在SQL中很容易做到的事情上遇到障碍。总结出现并合并在R
问题如下: 我有2个表格: 表A:由'初始命令'组成。这是我们与客户的第一次联系。表B:由“次级订单”组成,即跟进与初始订单相关的订单。
有一对多的关系。 表A具有以下的列:
- 订货号
- 订单日期
- 部件号
- 客户ID
表B具有以下的列:
- 订单号
- 订单日期
- 部件号
- 初始顺序号
假定每个顺序总是为1的数量,但是我可以在A.在乙多行对于每个初始顺序
我想现在要做的是合并这两个表,但我希望有一个总结,通过B的部件号,联系到A.
数据看起来像这样 答:
Order_Num Order_date Part_Num Cust_ID
100 1/1/2013 1001 1111
101 1/15/2013 1002 1111
B:
Order_Num Order_date Part_Num Init_Order_Num
200 2/1/2013 2001 100
201 3/15/2013 2002 100
202 4/18/2013 2002 100
203 5/1/2013 2002 101
我想看到的到底是这样的:
Order_Num Order_date Part_Num Cust_ID Count_Part_2001 Count_Part_2002
100 1/1/2013 1001 1111 1 2
101 1/15/2013 1002 1111 1
我已经通过各种解决方案,这里包括使用ddply望去,数,汇总,总计等,但似乎没有工作。数据集有大约2.6米初始订单和40万次要订单。 尝试使用ddply,即使我将数据设置为1000次级订单仍然导致内存不足错误(我在机器中有16GB)。
在SQL我会使用一个计数(订单号),在辅助组中按部件号分组,然后将初始订单号上的初始订单表连接起来(还会创建'Count_Part_2001'和'Count_Part_2002'列。Pivot的工作方式与R中的melt()命令相反)。
这听起来很像你想要使用** data.table **,这将解决你的性能问题,并可能在至多2-3行中完成。但是我们将需要更多R友好格式的示例数据。 – joran
@joran在效率上是正确的,但如果你已经熟悉sql,你可以看看'sqldf'包。 – Justin
我相信示例输出稍微不正确。最后的“1”应该属于“Count_Part_2002”,对吗? – A5C1D2H2I1M1N2O1R2T1