既存のデータフレーム(df1)に新しい列を作成しようとしましたが、異なるデータフレーム(df2)の列yの値と比較しています。2つの列間の一致に基づいたデータフレームの新しい列
結果はdf_endのようになります。一致がある場合は、列xの値を返す必要があります。一致がない場合は、NAを返す必要があります。
df1 <- data.frame(x = c("blue2", "blue6", "green9", "green7"))
df2 <- data.frame(y = c("blue2", "green9"))
df_end <- data.frame(x = c("blue2", "blue6", "green9", "green7"),
match = c("blue2", NA, "green9", NA))
私はマージ、マッチ、if、else文で実験しましたが、わかりません。誰かが私のためのアドバイスを持っていますか?
#Attempt 1: Merge
df1$match <- merge(df1, df2, by.x = x, all = TRUE)
df1とdf2の長さが異なるため、これは機能しません。
は 'すべて= true'の引数を指定して' merge'を使用して 'を調整しますby.x'と 'by.y'引数をそれぞれの変数名にマッチさせます。 – lmo
'df2 $ y [match(df1 $ x、df2 $ y)] ' – Sotos