2017-02-14 3 views
1

ich auf R arbeite und SQL (Paket sqldf) auf einem Datensatz wie die folgenden:R SQL erstellen paarweise Daten-Set ohne Wiederholungen

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  ... 

Ich mag eine paarweise Datensatz mit einem Paar für jeden schaffen Gruppe von key1 und key2 identifiziert, wie folgend:

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 

I

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')) 

Das Problem ist, t verwendet haben Hut mit dieser Abfrage erhalte ich

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 

ich Wiederholungen vermeiden möchte, da ich einige Comparaisons machen wollen und es ist egal, welche ID in der Spalte ID_1 und die in ID_2 gesetzt wird.

Vielen Dank!

Antwort

3

Ändern Sie die Verbindungsbedingung von a.id != b.id zu a.id < b.id

Verwandte Themen