私は3つの列を持っています。最初の列は完了していますが、2番目と3番目の列は不完全であり、3つの列すべての既存の値に基づいてそれらを完了したいと思います。次に例を示します。
number a b
1 Q V
2 R W
3 S X
4 T Y
5 U Z
3 S X
2 R W
4 T Y
1 Q V
5 U Z
4
1
5
3
2
2
4
3
5
1
私がする必要があるのは、列「a」の最初の空の値に移動し、列「number」(4)の値を見て、「number」(4)に対応する「a」と「b」の値を見つけることです。 )、次にそれらの値を列「a」と「b」に挿入します。次に、不足している次の値に移動します。
私は2つのデータフレームを使用する1つの解決策に出くわしました。「df」と呼ばれる1つのデータフレームは、この投稿の冒頭に示されている元のテーブルであり、2番目のデータフレーム(「df2」と呼ばれる)はキーです。
number a b
1 Q V
2 R W
3 S X
4 T Y
5 U Z
3 S X
2 R W
4 T Y
1 Q V
5 U Z
次に、df1の値を使用してdfに値を入力できます。
df$a <- df2$a[ match(df$number, df2$number)]
df$b <- df2$b[ match(df$number, df2$number)]
これにより、新しいdfが次のようになります。
number a b
1 Q V
2 R W
3 S X
4 T Y
5 U Z
3 S X
2 R W
4 T Y
1 Q V
5 U Z
4 T Y
1 Q V
5 U Z
3 S X
2 R W
2 R W
4 T Y
3 S X
5 U Z
1 Q V
これは私にとってはうまくいくようです!ただし、いくつかの未解決の問題/質問があります。
1)これを行うためのよりエレガントで効率的な方法はありますか?できれば単一のデータフレームdfのみを使用しますか?
2)「数値」を照合するために、このメソッドはその列の照合の最初のインスタンスを使用するだけですか?
3)既存の「a」と「b」の値が正しく割り当てられていることをテストする良い方法はありますか(つまり、同じ「番号」の各インスタンスは同じ「a」と「b」を持っています。これは質問#に関連しています2真上。
これについてアドバイスをありがとう!