2つの列に基づいて重複行を識別してマークを付けたいのですが。行が重複していることだけでなく、どの行と重複しているかがわかるように、重複ごとに一意の識別子を作成したいと思います。以下のようなデータフレームがあり、重複したアイテムのペア(フィットとシット)と、重複していない他のペアがあります。アイテムのペアは複製されますが、それらに含まれる情報は一意です(たとえば、1つの行のValue1には1つの行の値がありますが、Value2とValue 3ではありません。 Value1ではありません)
現在のデータフレーム
value1 value2 value3 fit sit
[1,] "1" NA NA "it1" "it2"
[2,] NA "3" "2" "it2" "it1"
[3,] "2" "3" "4" "it3" "it4"
[4,] NA NA NA "it4" "it3"
[5,] "5" NA NA "it5" "it6"
[6,] NA NA "2" "it6" "it5"
[7,] NA "4" NA "it7" "it9"
サンプルデータフレームを生成するコード
value1<-c(1,NA,2,NA,5,NA,NA)
value2<-c(NA,3,3,NA,NA,NA, 4)
value3<-c(NA,2,4,NA,NA,2, NA)
fit<-c("it1","it2","it3","it4", "it5", "it6","it7")
sit<-c("it2","it1","it4","it3", "it6", "it5", "it9")
df.now<-cbind(value1,value2,value3, fit, sit)
私が欲しいのは、それを次のようなデータフレームに変換することです:
必要なデータフレーム
val1 val2 val3 it1 it2
[1,] "1" "3" "2" "it1" "it2"
[2,] "2" "3" "4" "it3" "it4"
[3,] "5" NA "2" "it5" "it6"
[4,] NA "4" NA "it7" "it9"
私は次の手順を実行することを考えていました:1. fitを使用して新しい変数を作成し、最低のアイテムと最高のアイテムで座って重複ペアを識別します2.重複アイテムのペアを識別します3. ifelseを使用して一意の情報を選択して入力します。
手順1と3の実行方法は知っていますが、手順2で行き詰まっています。必要なのは、TRUE / FALSEの重複を識別するだけではなく、このような各アイテムのペアに一意の識別子を持つ列があることです(ある私のステップ1)のために2つの余分な行があります:
value1 value2 value3 fit sit lit hit dup
[1,] "1" NA NA "it1" "it2" "it1" "it2" 1
[2,] NA "3" "2" "it2" "it1" "it1" "it2" 1
[3,] "2" "3" "4" "it3" "it4" "it3" "it4" 2
[4,] NA NA NA "it4" "it3" "it3" "it4" 2
[5,] "5" NA NA "it5" "it6" "it5" "it6" 3
[6,] NA NA "2" "it6" "it5" "it5" "it6" 3
[7,] NA "4" NA "it7" "it9" "it7" "it9" NA
これを行う方法がわかりません。
私が求めているのは、ステップ2の助けになるか、おそらく私が概説したステップよりもそれを解決するより良い方法があるでしょう。