2016-09-21 9 views
1

私のデータ作業中に私はこの問題があります。データは以下の通りである 、どのように下の基準でペアが維持されますか? (私の基準を説明した)

row_number  var1 var2 
1    1921 16 
2    1922 16 
3    1921 17 
4    1922 17 
5    1703 29 
6    1704 29 
7    1705 29 
8    1703 30 
9    1704 30 
10    1705 30 
11    1703 31 
12    1704 31 
13    1705 31 

は私だけのユニークなVAR1とユニークなVAR2を使用してペアを作りたいです。

つまり、1〜4行がグループになり、1列目と4列目のままにする必要があります。そして、5〜13行は別のグループになることができ、私はこのペア(1703 29、1704 30、1705 31)のままにする必要があります。それは私が私がずっと観測を持っている。この結果

row_number  var1 var2 
1    1921 16 
4    1922 17 
5    1703 29 
9    1704 30 
13    1705 31 


を持つようにしたいです。

+0

5-13が別のグループの場合、なぜ9が含まれていますか? – akrun

+0

5行目から13行目(合計9行)は別のグループです –

+0

私はそれを理解していますが、最初の1〜4の要素の数は5〜9で5 – akrun

答えて

1

データがdという名前のデータフレームにあるとします。その後

out <- data.frame(row_number = NA, var1 = NA, var2 = NA) 
for (i in 1:nrow(d)) { 
    if (!(d[i, "var1" ] %in% out[, "var1"]) & !(d[i, "var2"] %in% out[, "var2"])) { 
    out <- rbind(out, d[i,]) 
    } 
} 
out <- out[-1, ] 
out 
# row_number var1 var2 
# 2   1 1921 16 
# 4   4 1922 17 
# 5   5 1703 29 
# 9   9 1704 30 
# 13   13 1705 31 

dの行を反復処理し、どちらvar1var2が以前の出力データフレームに登場している行のみを抽出することによって、あなたの希望する結果を提供します。

+0

私ははるかに多くの観測値を持っています。長いデータセットでは機能しません。私はあなたの論理を理解しようとしています –

+0

あなたは "それは動作しません"という意味についてより具体的にする必要があります。 *あなたのロジックを明確にする必要があるかもしれません(ただし、コメントには書き込まないでください - 上記の質問を編集してください)。 –

+0

申し訳ありません。決して私のコメントを気にしないでください。しかし、ここに問題があります。 出力とデータ "d"では、どちらも一意のvar1とvar2の同じ数を持つ必要があります。 –

関連する問題