У меня есть гораздо больший существующий dataframe. Для этого небольшого примера я хотел бы заменить некоторые из переменных (replace state (df1)) на newstate (df2) в соответствии с первым столбцом. Моя проблема заключается в том, что значения возвращаются как NA, так как только некоторые из имен сопоставляются в новом фрейме данных (df2).Имейте номенклатурное возвращаемое значение as-is, используя функцию соответствия в R
Существующие dataframe:
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
Новый dataframe в соответствии с существующими dataframe
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
Ваш код работает. [Спасибо.] Но можете ли вы объяснить, почему у вас есть' indx! = 0' в левой части равных и 'indx' on правая часть равен? 'df1 $ state [indx! = 0] <- df2 $ newstate [indx]' –