如何在 R 中執行兩個 data.table 物件的笛卡爾連線?
笛卡爾連線是將兩個物件連線起來,建立物件中每個值與另一個物件中的所有值組合。例如,如果我們有一個包含 1, 2, 3 的向量 x,而另一個物件 y 包含 a、b、c,則笛卡爾連線將是 1a、2a、3a、1b、2b、3b 、1c、2c 和 3c。檢視下面的示例,瞭解如何執行此操作。
示例
> library(data.table) > DT1<-data.table(x=1:4) > DT1
輸出
x 1: 1 2: 2 3: 3 4: 4
示例
> DT2<-data.table(y=25:30) > DT2
輸出
y 1: 25 2: 26 3: 27 4: 28 5: 29 6: 30
執行 DT1 和 DT2 的笛卡爾連線
示例
> DT1[,as.list(DT2),by=DT1]
輸出
x y 1: 1 25 2: 1 26 3: 1 27 4: 1 28 5: 1 29 6: 1 30 7: 2 25 8: 2 26 9: 2 27 10: 2 28 11: 2 29 12: 2 30 13: 3 25 14: 3 26 15: 3 27 16: 3 28 17: 3 29 18: 3 30 19: 4 25 20: 4 26 21: 4 27 22: 4 28 23: 4 29 24: 4 30 x y
讓我們來看另一個示例
示例
> DT_G<-data.table(Group=LETTERS[1:5]) > DT_G
輸出
Group 1: A 2: B 3: C 4: D 5: E
示例
> DT_Count<-data.table(sample(21:50,5)) > DT_Count
輸出
V1 1: 22 2: 28 3: 45 4: 31 5: 47
執行 DT_G 和 DT_Count 的笛卡爾連線
示例
> DT_G[,as.list(DT_Count),by=DT_G]
輸出
Group V1 1: A 22 2: A 28 3: A 45 4: A 31 5: A 47 6: B 22 7: B 28 8: B 45 9: B 31 10: B 47 11: C 22 12: C 28 13: C 45 14: C 31 15: C 47 16: D 22 17: D 28 18: D 45 19: D 31 20: D 47 21: E 22 22: E 28 23: E 45 24: E 31 25: E 47 Group V1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP