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