У меня есть фрейм данных с тысячами названий городов с ошибками. Мне нужно исправить это и не могу найти решение, хотя я много искал. Я попробовал несколько функций и подходов
Это миниатюрный образец данных:
citA <- data.frame("num" = c(1,2,3,4,5,6,7,8),
"city" = c("BORNE","BOERNAE","BARNE","BOERNE",
"GALDEN","GELDON","GOELDEN","GOLDEN"))
num city
1 1 BORNE
2 2 BOERNAE
3 3 BARNE
4 4 BOERNE
5 5 GALDEN
6 6 GELDON
7 7 GOELDEN
8 8 GOLDEN
Это некоторые из функций, которые я пробовал, пробовал еще много, включая str_replace и str_detect :
cit <- function(x){
ifelse(x %in% grepl(c("BOR","BOE","BAR")),"BOERNE",
ifelse(x %in% grepl(c("GAL","GEL","GOE")), "GOLDEN", "OTHER"))
}
Или
cit <- function(x){
ifelse(x %in% c("BOR","BOE","BAR"),"BOERNE",
ifelse(x %in% c("GAL","GEL","GOE"), "GOLDEN", "OTHER"))
}
Код запуска:
`citA$city2 <- cit(citA$city)`
Неверный результат:
num city city2
1 1 BOERNE OTHER
2 2 BOERNAE OTHER
3 3 BARNE OTHER
4 4 BOERNE OTHER
5 5 GALDEN OTHER
6 6 GELDON OTHER
7 7 GOELDEN OTHER
8 8 GOLDEN OTHER
Также попытался:
citA$city[grepl(c("BOR","BOE","BAR"),citA$city)] <- "BOERNE"
Но это выдает ошибку:
Warning message:
In grepl(c("BOR", "BOE", "BAR"), citA$city) :
argument 'pattern' has length > 1 and only the first element will be used
Ваши идеи будут очень полезны!