【发布时间】:2021-10-18 00:44:17
【问题描述】:
抱歉,在我匆忙发布我的问题时,我忘了遵守发布的基本规则。我已经按照这些规则编辑了我的帖子:
R 专家, 我很欣赏之前提出过类似的问题,但我无法将之前建议的解决方案调整到我的具体数据问题。我基本上有一个数据框(称为 df1),其中一列是一串句子,其中一部分包含城市名称和国家名称。例如,数据框 df1 有一个名为 bus_desc 的列,其中包含以下数据:
| bus_desc |
|---|
| Company ABCD has a base capital of USD 5 million. Company ABCD is based in Mobile, Alabama, US. It is also known to have issued 10 million shares ..... |
| Company XYZ has a history of producing bolts. Company XYZ operates out of Delhi, India. Its directors decided to.... |
在另一个数据框(称为 df2)中,我有两列数据(命名为城市和国家),其中每一行包含一个城市名称和对应的国家/地区,如下所示:
| city | country |
|---|---|
| MOBILE | US |
| DELHI | INDIA |
| LONDON | UK |
我希望 R 在数据框 df1 中搜索该列的每一行的句子字符串,并将城市(国家相同)与数据框中相关列中的城市名称(以及国家名称)进行匹配df2。如果匹配,我想在数据框 df1 中创建一个名为 city 的列,并从数据框 df2 中提取城市名称并将其分配给数据框 df1 中的行。我的最终输出应该是这样的:
| bus_desc | city | country |
|---|---|---|
| Company ABCD has a base capital of USD 5 million. Company ABCD is based in Mobile, Alabama, US. It is also known to have issued 10 million shares ..... | MOBILE | US |
| Company XYZ has a history of producing bolts. Company XYZ operates out of Delhi, India. Its directors decided to.... | DELHI | INDIA |
如果存在,任何人都可以建议一个简单的解决方案吗?我尝试了以下方法,但它不起作用
df1 <- df1 %>% rowwise() %>%
mutate(city=ifelse(grepl(toupper(bus_desc),df2$city),df2$city,df1))
非常感谢您的解决方案和帮助。
问候, 开发
【问题讨论】:
标签: r string-matching