R SQL创建成对数据集而不重复

时间:2017-02-14 15:36:40

标签: sql r sqldf

我正在研究数据集上的R和SQL(包sqldf),如下所示:

View(dataset)

key1    key2    id    ...
01/01   XXX     A     ...
01/01   XXX     B     ...
01/01   YYY     C     ...
01/01   YYY     D     ...
02/01   XXX     A     ...
02/01   XXX     B     ...
02/01   XXX     C     ...

我想为key1和key2标识的每个组创建一对配对数据集,如下所示:

key1    key2    id_1    id_2    
01/01   XXX     A       B  
01/01   YYY     C       D
02/01   XXX     A       B
02/01   XXX     A       C
02/01   XXX     C       B

我用过

sqldf(c('select a.key1, a.key2, a.id as id_1, 
                  b.id as id_2 
                  from dataset a
                  inner join dataset b on a.key1=b.key2 and a.key2=b.key2  and a.id!=b.id'))

问题是我通过这个查询获得了

key1    key2    id_1    id_2    
01/01   XXX     A       B
01/01   XXX     B       A    
01/01   YYY     C       D
01/01   YYY     D       C
02/01   XXX     A       B
02/01   XXX     B       A
02/01   XXX     A       C
02/01   XXX     C       A
02/01   XXX     C       B
02/01   XXX     B       C

我想避免重复,因为我想做一些比较,并且在id_1列中放入哪个id并且在id_2中放哪个id并不重要。

非常感谢!

1 个答案:

答案 0 :(得分:3)

将联接条件从a.id != b.id更改为a.id < b.id