r - R 中的交叉连接与过滤/匹配

标签 r cross-join

我想在 R 中进行交叉连接。如果我们没有条件,那么 data.table 包就会执行此操作。但是 R 中这个 SQL 查询的等价物是什么?

Select table1.value as value1, table2.value as value2
from table1 cross join table2 where table1.id = table2.id

考虑这个例子

table1:
id  value
1   1
1   2
2   1
3   1
3   3
3   4

table2:
id  value
1   5
1   4
2   1
3   4
3   3

在这种情况下,我想要的输出是:

value1 value2
1      5
1      4
2      5
2      4
1      1
1      4
1      3
3      4
3      3
4      4
4      3

请注意,id 列不是唯一的,结果集也没有唯一的行。

最佳答案

列 value.x 和 value.y 是您所需要的

   table1 <- data.frame(id= c(1,1,2,3,3,3), value=c(1,2,1,1,3,4))
   table2 <- data.frame(id=c(1,1,2,3,3), value=c(5,4,1,4,3))
   merge(table1,table2,by="id",all.y=TRUE)



   id    value.x  value.y
1   1       1       5
2   1       1       4
3   1       2       5
4   1       2       4
5   2       1       1
6   3       1       4
7   3       1       3
8   3       3       4
9   3       3       3
10  3       4       4
11  3       4       3

关于r - R 中的交叉连接与过滤/匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940343/

相关文章:

mysql - 在mysql中按日期交叉连接

r - 如何判断代码是否在 knitr/rmarkdown 上下文中执行?

r - 在 R 中的 sqldf 中使用 INSERT 语句

用于检索不相关记录的元组的 SQL

mysql - on 子句错误中的未知列

sql - CROSS JOIN 和一表多表 FROM 有什么区别?

R 2个逗号是什么意思?

r - 如何在 foreach 中以编程方式在 %do% 和 %dopar% 之间切换?

r - ggplot2 的默认图边距是多少?

mysql - 如何连接两个不相关的mysql表并使用按日期分组