删除所有与一组字符串不匹配的行,并对列进行重新分类

问题描述 投票:0回答:1

我有一组来自twitter API的社交媒体数据,其中还包括人们的自我报告位置。但是,位置字符串并非默认为用于分类的标准格式,并且有时存在“巨魔”值。这是一个例子

a1 = data.frame(x=c(1:4),y=c("181 Metro Drive San Francisco", "Wall Street New York", "Austin, TX", "The Moon"))
a1

我的计划是在https://www.kaggle.com/max-mind/world-cities-database处获取一个包含世界所有城市名称的CSV文件,并将其作为矢量导入R,这是一个小例子

a2 = c("New York", "Washington", "Austin")
a2

[我想做的是编写一个基于a2交叉引用a1的R函数,将a1中没有出现在a2上的所有字符串替换为NA,并用该精确值替换出现在a2上的所有字符串。字符串值。例如,假设我们的函数是f,则函数的输出如下所示

x = data.frame(x=c(1:4),c("San Francisco", "New York", "Austin", NA))
x

我可以为此在R中编写一个函数,还是为此任务构建任何现有的R软件包?谢谢你的帮助

r text-mining data-cleaning
1个回答
0
投票

我们可以将所有城市名称粘贴为图案,然后使用str_extract提取它。

library(stringr)

str_extract(a1, str_c(a2, collapse = "|"))
#[1] "San Francisco" "New York"      "Austin"        NA 

数据

a2 = c("New York", "Washington", "Austin", "San Francisco")
a1 = c("181 Metro Drive San Francisco", "Wall Street New York", 
       "Austin, TX", "The Moon")
© www.soinside.com 2019 - 2024. All rights reserved.