如何对R中的两个data.table对象执行笛卡尔联接?
笛卡尔联接是两个对象的联接,创建对象中每个值与另一个对象中所有值的组合。例如,如果我们有一个包含x,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
输出结果
x1: 1
2: 2
3: 3
4: 4
示例
> DT2<-data.table(y=25:30)> DT2
输出结果
y1: 25
2: 26
3: 27
4: 28
5: 29
6: 30
执行DT1和DT2的笛卡尔连接:
示例
> DT1[,as.list(DT2),by=DT1]
输出结果
x y1: 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
输出结果
Group1: A
2: B
3: C
4: D
5: E
示例
> DT_Count<-data.table(sample(21:50,5))> DT_Count
输出结果
V11: 22
2: 28
3: 45
4: 31
5: 47
执行DT_G和DT_Count的笛卡尔连接:
示例
> DT_G[,as.list(DT_Count),by=DT_G]
输出结果
Group V11: 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
以上是 如何对R中的两个data.table对象执行笛卡尔联接? 的全部内容, 来源链接: utcz.com/z/340776.html