从R中数据帧的列中提取一个城市(特定单词)



假设我有一个excel文件,我已经将其作为数据帧读取并加载到R中。其中一列是包含一个或多个单词的文本列。我必须找出一个单元格是否包含在";City_Vector";(例如c("New York", "Beijing", "Paris", "London")并提取它(或提取第一个匹配/所有匹配(。在Excel中,我使用了一个用户定义的函数,得到了这样的smth:

| For Moscow State University |应返回Moscow| asdsadsadsaWarsawsdaqq |应返回Warsaw

我试图将字符串拆分并使用%in%,但这似乎不是最好的解决方案。非常感谢。

如果目标是提取匹配项而不考虑情况,那么这应该有效:

数据:

City_Vector <- c("New York", "Bejing", "Paris", "London", "Moscow", "Warsaw")
cities <- c('Moscow State University','asdsadsadsaWarsawsdaqq', 
'New York Philhamonics', 'food in Bejing', 'parisclimateaccord')

解决方案:

library(stringr)
str_extract(cities, paste0("(?i)(", paste0(City_Vector, collapse = "|"), ")"))

说明:

这里的重点是使用嵌套的paste0命令将所有可能的城市名称公式化为备选模式(注意备选标记|(。

编辑

(?i)用于使模式不区分大小写。

使用stringr包中的str_extract()

过于简单的例子:

cityVec <- c('Moscow State University','asdsadsadsaWarsawsdaqq')
str_extract(cityVec, 'Moscow')

相关内容

最新更新