我有以下 df
library(tidyverse)
a <- tibble(country = c(
"Bolivia (Estado Plurinacional de)",
"Corea del Sur (República de)",
"Reino Unido de Gran Bretaña e Irlanda del Norte",
"Venezuela (República Bolivariana de)",
"Congo (República Democrática del)",
"República Árabe Siria"
))
然后,我尝试用 str_replace_all 函数替换国家/地区
dict <- c(
"Bolivia (Estado Plurinacional de)" = "Bolivia",
"Corea del Sur (República de)" = "Corea del Sur",
"Reino Unido de Gran Bretaña e Irlanda del Norte" = "Reino Unido",
"Venezuela (República Bolivariana de)" = "Venezuela",
"Congo (República Democrática del)" = "Congo",
"República Árabe Siria" = "Siria"
)
a$country %>% str_replace_all(pattern = dict)
但该代码不适用于所有字符串,例如委内瑞拉 (República Bolivariana de) 或刚果 (República Democrática del)。有人可以帮我解决这个问题吗?
非常感谢
最佳答案
只需将您的字典替换为
dict <- c(
"Bolivia \\(Estado Plurinacional de\\)" = "Bolivia",
"Corea del Sur \\(República de\\)" = "Corea del Sur",
"Reino Unido de Gran Bretaña e Irlanda del Norte" = "Reino Unido",
"Venezuela \\(República Bolivariana de\\)" = "Venezuela",
"Congo \\(República Democrática del\\)" = "Congo",
"República Árabe Siria" = "Siria"
)
在正则表达式中,括号是特殊字符。因此,您必须使用转义字符,在本例中为 \\(
和 \\)
而不是 (
和 )
.
使用这个新的dict
你的代码返回
> a$country %>% str_replace_all(pattern = dict)
[1] "Bolivia" "Corea del Sur" "Reino Unido" "Venezuela" "Congo" "Siria"
关于r - str_replace_all 不适用于包含括号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67706628/