Исходный фрейм данных был просто местоположением другого имени пользователя. dataframe
Затем я делю разделитель разделителя на «,» для местоположения.И вот как я получил 6 столбцов местоположения.Я пытаюсь выяснить страну каждого пользователя, поэтому я пытаюсь составить карту для данных о городах мира, где есть города и страны.
library(maps)
world=world.cities
colnames(world)=c("city","country","pop","lat","long","capital")
Я пытаюсьсопоставьте столбцы location_1, location_2, ... location_6 в первом кадре данных, чтобы проверить, есть ли совпадение со столбцом страны во втором кадре данных.У меня есть этот код, и он работает, и я заполнил некоторые страны df1.
df1$country<- df2$country[ match(df1$location_1, df2$country)]
Однако, когда я пытаюсь снова запустить тот же код для остальных мест.Это не сработало, просто выскочили значения NA, я думаю, есть ли способ, чтобы всякий раз, когда есть столбец со значением NA, он просто пропускал это конкретное совпадение с df2. df1 df2
df1$country<- df2$country[ match(df1$location_1, df2$country)]
df1$country<- df2$country[ match(df1$location_2, df2$country)]
df1$country<- df2$country[ match(df1$location_3, df2$country)]
df1$country<- df2$country[ match(df1$location_4, df2$country)]
df1$country<- df2$country[ match(df1$location_1, df2$country)]
Я могу закодировать их вручную, удалив сопоставленную страну и оставив сопоставления для столбцов NA, но это слишкомдорого за время.Посмотрите код ниже:
df1$country<- df2$country[ match(df1$location_1, df2$country)]
df3=df1 %>% filter(is.na(country))
df3$country<- df2$country[ match(df3$location_2, df2$country)]
df4=df3 %>% filter(is.na(country))
Я сделал что-то подобное, и это работает, но это действительно не то, что я хочу.Я думаю, есть ли другой способ.
Спасибо за любую помощь!