2017-05-08 12 views
0

すべてのティッカーの一意の組み合わせを作成しようとしています。私はすべての組み合わせでデータフレームを作成しました。しかし、私は同じものをすべて削除したい。したがって、行1列1のティッカーが行1列2のテキストと等しい場合は、このNAを作成するか、行を削除します。したがって、すべてのユニークな組み合わせが残されます。列1のテキストと列2のテキスト(r)のテキストが等しい場合、データフレームから行を削除します

q <- c("BATS LN EQUITY","DGE LN EQUITY","IMB LN EQUITY","RDSB LN EQUITY") 
    p <- c("GBPUSD CURNCY","GOLDS INDEX","DXY CURNCY") 
    o <- expand.grid(q=q, p=p) 
    o[order(o$q),] 
    o <- data.frame(o) 
    o$q <- as.character(o$q) 
    o$p <- as.character(o$p) 
    o <- data.frame(o) 



    for(i in 1:nrow(o)){ 
    if(o[i,1] = o[i,2]){ 
    o[i,2] = NA 
    } 
    } 

答えて

1

代わりに、2つの列が等しくない行を維持すると考えてください。試してください:o[o$q != o$p,]

解決策も使用できますが、ifでは=の代わりに==を使用する必要があります。このように:

for(i in 1:nrow(o)){ 
    if(o[i,1] == o[i,2]){ 
    o[i,2] = NA 
    } 
} 

これはちょうど遅く、私が言及する最初の方法よりも慣用ではありません。そして、彼らは異なる出力を持っていますが、どちらもあなたが望むと言っているオプションのセットに入っています。

0

神託の方法は、パンダで重複する機能を使用することですので、私はより多くのPythonだけど、Rのために、私はユニーク()関数が良いだろうと思うだろう:(また

unique(o) 

重複を使用することが可能)function:

+1

これは、ユニークな行を見つけるのに役立ちますが、OPが望むものではありません.OPは、列が一意の場合に各行を保持したいと考えています。 – Gregor

+0

ああ、申し訳ありませんが、OPの行のコンテキストで必要と考えていた疑問を誤解した。可能であれば反復処理から救うことを望んでいましたが、通常は遅いアプローチでした。 – Benloper

関連する問題