Мутировать DF1 на основе DF2 с проверкой - PullRequest
1 голос
/ 12 апреля 2020

nub ie здесь с вопросом о фрейме данных / мутировании ... Я хочу обновить фрейм данных (df1) на основе данных в другом фрейме данных (df2). Для одного раза я использовал MUTATE, так что я думаю, что это путь к go. Кроме того, я хотел бы добавить функцию проверки (TRUE / FALSE?), Чтобы указать, было ли обновлено поле в df1.

Например.

df1-
 State
   <chr>
 1 N.Y. 
 2 FL   
 3 AL   
 4 MS   
 5 IL   
 6 WS   
 7 WA   
 8 N.J. 
 9 N.D. 
10 S.D. 
11 CALL 

df2
State New_State   
   <chr> <chr>       
 1 N.Y.  New York    
 2 FL    Florida     
 3 AL    Alabama     
 4 MS    Mississippi 
 5 IL    Illinois    
 6 WS    Wisconsin   
 7 WA    Washington  
 8 N.J.  New Jersey  
 9 N.D.  North Dakota
10 S.D.  South Dakota
11 CAL   California 

Я хочу, чтобы вывод выглядел вот так

df3
New_State          Test
  <chr>         
 1 New York        TRUE
 2 Florida         TRUE
 3 Alabama         TRUE
 4 Mississippi     TRUE
 5 Illinois        TRUE
 6 Wisconsin       TRUE
 7 Washington      TRUE
 8 New Jersey      TRUE
 9 North Dakota    TRUE
10 South Dakota    TRUE
11 CALL            FALSE

По сути, я хочу, чтобы R считал данные в df1 и изменил df1 на основе совпадения в df2, связав его с полным именем состояния и заменив. И, наконец, если данные в df1 были обновлены, пометьте их как «ИСТИНА» (от Нью-Йорка до Нью-Йорка) и «ЛОЖЬ», если не обновлены (ЗВОНОК против КАЛ)

Заранее благодарим за любую помощь.

1 Ответ

0 голосов
/ 13 апреля 2020

Это должно дать вам результат, который вы ищете:

match_vec <- match(df1$State, table = df2$State)

Этот вектор должен соответствовать всем сокращенным именам состояний в df1 с теми, что в df2. Там, где нет совпадения, вы получаете пропущенное значение:

Тогда следующий код, использующий dplyr, должен выдать запрошенный вами df3.

library(dplyr)
df3 <- df1 %>% 
  mutate(New_State = df2$New_State[match_vec]) %>% 
  mutate(Test = !is.na(match_vec)) %>% 
  mutate(New_State = ifelse(is.na(New_State), 
                            State, New_State)) %>% 
  select(New_State, Test)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...