2017-02-14 4 views
1

я работаю на R и SQL (пакет sqldf) на наборе данных, как следующий:R SQL создать парной набор данных без повторений

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 

Я хотел бы избежать повторений, так как я хочу сделать некоторые Comparaisons и это не имеет значения, какой идентификатор помещается в ID_1 столбца и который в ID_2.

спасибо!

ответ

3

Изменение состояния соединения от a.id != b.id до a.id < b.id