2016-12-29 3 views
1

Ich habe diesen Datenrahmen:Wie man einzigartige Paare vom Datenrahmen in R erhält?

 [,1]   [,2]   
[1,] "CHC.AU.Equity" "SGP.AU.Equity" 
[2,] "CMA.AU.Equity" "SGP.AU.Equity" 
[3,] "AJA.AU.Equity" "AOG.AU.Equity" 
[4,] "AJA.AU.Equity" "GOZ.AU.Equity" 
[5,] "AJA.AU.Equity" "SCG.AU.Equity" 
[6,] "ABP.AU.Equity" "AOG.AU.Equity" 
[7,] "AOG.AU.Equity" "FET.AU.Equity" 
[8,] "SGP.AU.Equity" "CHC.AU.Equity" 

Wie würde ein Filter nur für die einzigartigen Paare? Z.B. - In der obigen Tabelle würde Zeile 8 mit Zeile 1 übereinstimmen und ausgeschlossen werden. Ich versuche setequal() zu benutzen, aber ich kann es nicht funktionieren. Gibt es eine "Setunique" -Funktion?

+0

Haben Sie 'unique (dataframe)' versucht? – OganM

+1

von dem, was ich sagen kann, sieht einzigartig nicht Gleichheit zwischen den ungeordneten Paaren. Scheint das "Spiel" nicht auszuschließen. Eigentlich scheint es auch bei geordneten Paaren nicht zu funktionieren. "dupliziert" scheint den Trick zu machen. – lukehawk

Antwort

1

Wir können mit apply eine Schleife durch die Reihen versuchen, sort die Elemente, die Ausgabe transponieren, die duplicated anwenden, negieren sie einen logischen Index von WAHR/FALSCH für einzigartige und Duplikate zurückzukehren und dass die Zeilen der Teilmenge zu verwenden.

m1[!duplicated(t(apply(m1, 1, sort))),] 
#   [,1]   [,2]   
#[1,] "CHC.AU.Equity" "SGP.AU.Equity" 
#[2,] "CMA.AU.Equity" "SGP.AU.Equity" 
#[3,] "AJA.AU.Equity" "AOG.AU.Equity" 
#[4,] "AJA.AU.Equity" "GOZ.AU.Equity" 
#[5,] "AJA.AU.Equity" "SCG.AU.Equity" 
#[6,] "ABP.AU.Equity" "AOG.AU.Equity" 
#[7,] "AOG.AU.Equity" "FET.AU.Equity" 
+0

Ugh. Zu einfach. Vielen Dank! – lukehawk

Verwandte Themen