【发布时间】:2020-04-18 23:49:58
【问题描述】:
我有一个包含数千个拼写错误的城市名称的数据框。尽管我进行了广泛搜索,但我需要更正这些并且找不到解决方案。我尝试了几种功能和方法
这是数据的一个微型样本:
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
你的想法会很有帮助!
【问题讨论】: