R两个数据的笛卡尔积。表

时间:2016-03-15 14:33:59

标签: r data.table

我在这里描述了两个data.frame。

Table1
ID  AMOUNT  ATTRIBUTE_2
K.20141107.003  1   DACH
K.20141127.048  197,1   E_FUT
K.20141107.003  0,35    E_INTRA
K.20141127.048  30  F1BY
K.20141127.048  131,4   ECC_E
K.20141107.003  0,03    CCP

Table2
ID  MONTH   M_VALUE ATTRIBUTE_1 CLOSE_DATE
K.20141127.048  01.01.2015  0,084931507 MATT    01.11.2014
K.20141127.048  01.02.2015  0,076712329 MATT    01.11.2014
K.20141127.048  01.03.2015  0,084817352 MATT    01.11.2014
K.20141127.048  01.04.2015  0,082191781 MATT    01.11.2014
K.20141127.048  01.05.2015  0,084931507 MATT    01.11.2014
K.20141127.048  01.06.2015  0,082191781 MATT    01.11.2014
K.20141127.048  01.07.2015  0,084931507 MATT    01.11.2014
K.20141127.048  01.08.2015  0,084931507 MATT    01.11.2014
K.20141127.048  01.09.2015  0,082191781 MATT    01.11.2014
K.20141127.048  01.10.2015  0,085045662 MATT    01.11.2014
K.20141127.048  01.11.2015  0,082191781 MATT    01.11.2014
K.20141127.048  01.12.2015  0,084931507 MATT    01.11.2014
K.20141107.003  01.11.2014  1   IN  01.11.2014

我想将两个表合并到ID上,并根据表1中的(ID,ATTRIBUTE_2)和表2中的(ID,MONTH)获得表的笛卡尔积。

我尝试了以下无法正常工作:

TABLE1[ , merge(TABLE1, TABLE2, by = "ID", all = FALSE), by = "ATTRIBUTE2"]

我要获得的结果如下:

ID  MONTH   M_VALUE ATTRIBUTE_1 CLOSE_DATE  AMOUNT  ATTRIBUTE_2
K.20141127.048  01.01.2015  0,084931507 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.02.2015  0,076712329 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.03.2015  0,084817352 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.04.2015  0,082191781 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.05.2015  0,084931507 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.06.2015  0,082191781 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.07.2015  0,084931507 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.08.2015  0,084931507 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.09.2015  0,082191781 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.10.2015  0,085045662 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.11.2015  0,082191781 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.12.2015  0,084931507 MATT    01.11.2014  197,1   E_FUT
K.20141127.048  01.01.2015  0,084931507 MATT    01.11.2014  30  F1BY
K.20141127.048  01.02.2015  0,076712329 MATT    01.11.2014  30  F1BY
K.20141127.048  01.03.2015  0,084817352 MATT    01.11.2014  30  F1BY
K.20141127.048  01.04.2015  0,082191781 MATT    01.11.2014  30  F1BY
K.20141127.048  01.05.2015  0,084931507 MATT    01.11.2014  30  F1BY
K.20141127.048  01.06.2015  0,082191781 MATT    01.11.2014  30  F1BY
K.20141127.048  01.07.2015  0,084931507 MATT    01.11.2014  30  F1BY
K.20141127.048  01.08.2015  0,084931507 MATT    01.11.2014  30  F1BY
K.20141127.048  01.09.2015  0,082191781 MATT    01.11.2014  30  F1BY
K.20141127.048  01.10.2015  0,085045662 MATT    01.11.2014  30  F1BY
K.20141127.048  01.11.2015  0,082191781 MATT    01.11.2014  30  F1BY
K.20141127.048  01.12.2015  0,084931507 MATT    01.11.2014  30  F1BY
K.20141127.048  01.01.2015  0,084931507 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.02.2015  0,076712329 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.03.2015  0,084817352 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.04.2015  0,082191781 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.05.2015  0,084931507 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.06.2015  0,082191781 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.07.2015  0,084931507 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.08.2015  0,084931507 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.09.2015  0,082191781 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.10.2015  0,085045662 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.11.2015  0,082191781 MATT    01.11.2014  131,4   ECC_E
K.20141127.048  01.12.2015  0,084931507 MATT    01.11.2014  131,4   ECC_E
K.20141107.003  01.11.2014  1   IN  01.11.2014  1   DACH
K.20141107.003  01.11.2014  1   IN  01.11.2014  0,35    E_INTRA
K.20141107.003  01.11.2014  1   IN  01.11.2014  0,03    CCP

请注意,对于TABLE1中的每个(ID,ATTRIBUTE_2)组合,ID K.20141127.048会重复12次。 我可以通过for循环来解决这个问题,但我更喜欢更优雅的解决方案。有人知道如何获得最终结果吗?

0 个答案:

没有答案