R两个数据表的笛卡尔积
我这里描述了两个数据帧R两个数据表的笛卡尔积,r,data.table,R,Data.table,我这里描述了两个数据帧 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
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
请注意,在表1中,ID K.20141127.048的每个组合(ID,属性_2)都会重复12次。
我可以通过for循环解决这个问题,但我更喜欢更优雅的解决方案。有人知道如何得到最终结果吗?在dplyrHi中使用full_join,我只是检查一下,但我认为merge(表1,表1,allow.cartesian=TRUE)应该可以完成这项工作。它与merge(表1,表1,allow.cartesian=TRUE)一起工作。笛卡尔的条件是关键。谢谢你的帮助。你应该在问题中使用data.table这个词(而不是“data.frame”)。。。还可以设置标签
data.table
。或者,你知道,如果你想要的话,可以使用Jan的函数