如何在 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

更新時間:19-11-2020

1K+ 瀏覽

開啟你的 職業旅程

透過完成課程,獲得認證

開始
廣告
© . All rights reserved.