2012-03-06 7 views
0

私はRを使い始めました。データフレームの2つの行からどのように要素の共通部分が見つかるのでしょうか?私は R:データフレームの2つの行から要素の共通部分を見つける方法はありますか?

intersect(thing[1,],thing[2,]) 

を試みたが、(交差点にあったものを省略し、間違いなく交差点でないもの)それは私の完全なナンセンスな答えを与えました。

どのようにこの問題にアプローチする必要がありますか?

+4

...データフレームは、いくつかの異なるタイプがありますが、何も心に来ていないシナリオのための滑らかな解決策があるかもしれませんが、あなたは私たちがエラーまたはより良いAを再現することができ、データセットを提供することができますエラーを再現するデータの最小限のスピン? –

+0

'thing < - matrix(c(1:10,5:14)、2、byrow = TRUE)の簡単な例; intersect(thing [1、]、thing [2、])'はうまく動作しますあなたのデータは何ですか?あなたは何を期待していますか? –

+0

これは私の問題に似ていますが、リストのリストを使用して、*隣接行列*(すべての可能性のある交差集合の長さを持つ行列)を取得します。私の追跡では、それ自身との交差点は1に等しい長さを生み出し、もう1つは0に等しい... – gunzapper

答えて

2

列の型がすべて同じ(たとえばすべての数値)の場合は、最初にas.matrixを使用して行列に変換し、交差を適用します。例えば、データフレームがZ呼び出された場合:列が変数の型が異なる場合

zz <- as.matrix(z) 
intersect(zz[1,], zz[2,]) 

、最初に比較したいではないであろうから、実際に匹敵する列を識別するために必要があるかもしれません整数へのレベル変数。例:「1」は、ここで返されますが

z <- data.frame(AA = c(1, 1, 3, 4), 
       BB = c(1, 5, 3, 1), 
       CC = c('1', 'a', 'b', 'b'), 
       DD = c(1, 2, 3, 4) 
z[z[,1] == z[,3],1] 

、「1」レベルの変数のための数値変数のための完全に異なる意味を持つことができるので、我々は数値変数とを比較したいべきではありません少なくとも注意深い見落としなしには、

関連する問題