私はdata.framesのリストを持っています。各data.frameは同じフォーマットの別々の出力です。私は、私は特に(1および3)2つの列を持って、私は重複を見つけるしたい重複ペアが存在する行インデックスを見つける方法
master <- do.call("rbind", list)
でマスターリストにそれらのすべてをマージすることができ、私は
unique.pairs <- unique(master[duplicated(master[,c(1,3)]),c(1,3)])
これで、そうされ一意の列1,3のペアのdata.frameを私に与えます。
ここで、このペアの他のインスタンスがどこにあるのかを調べたいと思います。理想的な出力は、ペアリング(文字列を連結することができる)とマスターからの行名を含む別の列を持つdata.frameです(見つけようとしている重複の索引で簡単に入手できます)。
(関心の2列にストリップダウン)ダミー例:
master <- data.frame(A=c(1,1,2,2,3,3,4,4,5,5), B=c(1,2,3,3,4,5,6,6,7,8))
unique.pairs <- unique(master[duplicated(master,c(1,2)]),c(1,2)])
今、私のようなdata.frameを作ることができるようにしたい:
results <- data.frame(instance=c("2->3","4->6"), indices=c("3,4","7,8"))
私は考えていますあなたはunique.pairs
の各ペアを繰り返し処理しますそのペアがmaster
のどこに存在するのかを調べることができますが、構文を理解できません。
すべての列を一緒に貼り付けることができ、重複を検索するのに便利な「文字」ベクトルを作成することができます( 'duplicated.data.frame'が正確に行います)。つまり' do.call(paste、c (sep_len(nrow(master))〜、マスター、アイデンティティ)や、さらには 'split( ')'のようなアプローチを考えることもできます(seq_len(nrow(master))、master、sep = " - >"、drop = TRUE) 'を使用します。 'paste'ingベクタの代わりに。 –
インデックスまたは行の名前を見つけるには、ダミーデータのマスターリスト列 –
Typoの内部に条件を指定して、コードが実行されないようにすることで最適な 'which()'関数を見つけることができます。 – Frank