私ははるかに大きな既存のデータフレームを持っています。この小さな例では、列「最初」に従って、いくつかの変数 (状態 (df1) を置き換える) を新しい状態 (df2) に置き換えたいと思います。私の問題は、名前の一部のみが新しいデータフレーム (df2) で一致するため、値が NA として返されることです。
既存のデータフレーム:
state = c("CA","WA","OR","AZ")
first = c("Jim","Mick","Paul","Ron")
df1 <- data.frame(first, state)
first state
1 Jim CA
2 Mick WA
3 Paul OR
4 Ron AZ
既存のデータフレームに一致する新しいデータフレーム
state = c("CA","WA")
newstate = c("TX", "LA")
first =c("Jim","Mick")
df2 <- data.frame(first, state, newstate)
first state newstate
1 Jim CA TX
2 Mick WA LA
一致を使用しようとしましたが、df2 からの一致する「最初の」変数が元のデータフレームに見つからない「状態」に対して NA を返します。
df1$state <- df2$newstate[match(df1$first, df2$first)]
first state
1 Jim TX
2 Mick LA
3 Paul <NA>
4 Ron <NA>
nomatch を無視する方法、または nomatch で既存の変数をそのまま返す方法はありますか? これは望ましい結果の例です。ジム/ミックの状態は更新されますが、ポールとロンの状態は変化しません。
first state
1 Jim TX
2 Mick LA
3 Paul OR
4 Ron AZ