在R中搜索并替换多个模式

时间:2018-01-24 16:46:35

标签: r grepl

我试图在嵌套的ifelse语句中使用grepl来简化包含研究人员所属国家的机构隶属关系的数据列,即'1234 University Way,University,Washington,United States'将成为'美国”。该专栏包含100多个国家的大学。起初我尝试使用grepl:

嵌套ifelse语句

H $ FAF1< - ifelse(grepl(“匈牙利”,H $ AF1),“匈牙利”,                  ifelse(grepl(“美国”,H $ AF1),“美国”,......

等,但我意识到嵌套ifelse语句的限制为50。有谁知道另一种方法吗?我试过写一个函数,但遗憾的是我还不熟悉R。

2 个答案:

答案 0 :(得分:1)

csgroen的正则表达式方法的替代方法,您必须手动写下国家/地区,您可以尝试countrycode - 包,它们已经包含在内,这可能会节省您一些时间...尝试:

countrycode::countrycode(sourcevar = "1234 University Way, University, Washington, United States", 
                         origin = "country.name", 
                         destination = "country.name")

答案 1 :(得分:0)

也许使用str_extract?我做了一个小例子。

min_ex <- c("1234 University Way, University, Washington, United States", 
            c("354 A Road, University B, City A, Romania"),
            c("447 B Street, National C University, City B, China"))

library(stringr)
str_extract(min_ex, regex("United States|Romania|China"))