2016-12-29 5 views
1

私はこのデータフレームを持っている:Rのデータフレームから一意のペアを取得する方法は?

 [,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" 

はどのようにして、単にユニークなペアをフィルタリングでしょうか?例えば。 - 上のdfでは、行8は行1に「一致」し、除外されます。私はsetequal()を使用しようとしていますが、私はそれを動作させることはできません。 'setunique'タイプの機能がありますか?

+0

「ユニーク(データフレーム)」を試しましたか? – OganM

+1

私には分かりませんが、ユニークなものは順序のないペアの間の平等は見えません。 「一致」を除外していないようです。実際には、順序付けされたペアでも動作しません。 'duplicated'はそのトリックをするようだ。 – lukehawk

答えて

1

私たちは、ユニークで重複を/ TRUE FALSEの論理インデックスを返すと行のサブセットすることを使用することを否定、duplicatedを適用し、出力を転置、行をループするapplysort要素を試すことができます。

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

簡単すぎる。ありがとう! – lukehawk

関連する問題