我正在研究数据集上的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并不重要。
非常感谢!
答案 0 :(得分:3)
将联接条件从a.id != b.id
更改为a.id < b.id