データフレーム(df1 $)の列の値を別のデータフレーム(df2 $ y)の値に条件付きで置きたいと思います。これらのデータフレームには、共有ID列(x)があります。 df1はdf2より多くの行を持ち、df2にない値を持ちます。データフレーム内の値を条件付きでR内の別のデータフレームから置換する
条件は次のとおりです。DF1 $ X == DF2 $ xにあれば、一致しない場合、DF2の$ yを持つDF1の$ yを置き換える何もしない
例:
> df1 <- data.frame(x = c(1, 1, 2, 3, 4, 4, 4, 5, 6, 7),
y = c(100, 100, 50, 50, 75, 75, 75, 50, 100, 25))
> df1
x y
1 1 100
2 1 100
3 2 50
4 3 50
5 4 75
6 4 75
7 4 75
8 5 50
9 6 100
10 7 25
> df2 <- data.frame(x = c(2, 4, 6, 7), y = c(25, 100, 75, 100))
> df2
x y
1 2 25
2 4 100
3 6 75
4 7 100
所望の出力次のとおりです。
これは私の最初の質問です。これは別の質問で回答されている場合は、私にごめんなさい。
この質問は、条件付きでdf1 $ yの値を置き換える方法を尋ねていますが、値はdf1.x!= df2.xのままにしておきたいので、Transfer values from one dataframe to anotherとは異なります。質問にリンクされている場合、条件に合わない値はNA値です。上のリンクへの答えに基づいてsqldf()を使用する例については、以下を参照してください。
> sqldf('SELECT df1.x , df2.y
+ FROM df1
+ LEFT JOIN df2
+ ON df2.x = df1.x')
x y
1 1 NA
2 1 NA
3 2 25
4 3 NA
5 4 100
6 4 100
7 4 100
8 5 NA
9 6 75
10 7 100
どのような条件ですか? x値が一致しないと、df1の2番目の行y値をdf2の最初の行y値に置き換えるのはなぜですか? – rawr
私はそれを明確にすべきだった。条件は次のとおりです。df1 $ x == df2 $ xの場合、df1 $ yをdf2 $ yに置き換えます。一致しない場合は何も行いません。メインの投稿を編集してこの条件を追加します。 –