我在这里描述了两个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循环来解决这个问题,但我更喜欢更优雅的解决方案。有人知道如何获得最终结果吗?