努力學習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