我有一個更大的現有數據框。對於這個較小的例子,我想根據列「first」來替換一些變量(用state替換(df1))和newstate(df2)。我的問題是值作爲NA返回,因爲只有一些名稱在新數據框(df2)中匹配。具有不匹配的返回值原樣使用R中的匹配函數
現有數據幀:
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
試圖使用匹配但返回NA爲「狀態」,其中匹配的「第一」從DF2變量不在原始數據框中找到。
df1$state <- df2$newstate[match(df1$first, df2$first)]
first state
1 Jim TX
2 Mick LA
3 Paul <NA>
4 Ron <NA>
有沒有辦法忽略不匹配或不匹配返回現有的變量?這將是預期結果的例子:吉姆/米克的狀態會更新,而保羅和羅恩的狀態不會改變。
first state
1 Jim TX
2 Mick LA
3 Paul OR
4 Ron AZ
您的代碼有效[謝謝]但是,您能解釋爲什麼您在equals和indx的左邊有'indx!= 0' ''df1 $ state [indx!= 0] < - df2 $ newstate [indx]' – 2016-10-05 11:34:25