У меня есть фрейм данных.
city <- as.character(c("London", "Unknown", "Birmingham", "Bristol", "Unknown", "Unknown", "Unknown", "Unknown"))
city_details <- as.character(c("London", "Camden", "Birmingham", "Outside London", "Camden Town", "Westminster", "London", "Birmingham"))
city_data <- data.frame(city, city_details)
Хотя некоторые значения в столбце city неизвестны, просмотр city_details показывает, что большинство из них на самом деле находятся в Лондоне.
Итак, я могу заменить некоторые из них:
city_data$city[grepl("Camden|Westminster", city_data$city_details)] <- 'London'
Однако, это сложнее с тем, что говорит "Лондон" в city_details, потому что есть и тот, который говорит "За пределами Лондона », поэтому я не хочу просто брать что-то, что имеет« лондонский »рисунок.
Для целей этого я не ищу способ включать только точные совпадения (потому что это не совсем подходит для моих реальных данных).
Итак, я хочу выполнить эту замену только для неизвестных городских значений.
В данный момент я попробовал следующее, но ясно, что логика отключена, потому что он фактически просто изменяет все неизвестные значения в столбце города на Лондон.
city_data <- within(city_data, city[city == "Unknown"] <- (city[grepl("London", city_details)] <- 'London'))
Кто-нибудь может помочь?