我有一个更大的现有数据框。对于这个较小的示例,我想根据“第一”列将一些变量(替换状态(df1))替换为新状态(df2)。我的问题是值作为 NA 返回,因为在新数据帧(df2)中只有一些名称匹配。
现有数据框:
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 按原样返回现有变量?这将是期望结果的示例:Jim/Mick 的状态被更新,而 Paul 和 Ron 的状态没有改变。
first state
1 Jim TX
2 Mick LA
3 Paul OR
4 Ron AZ