gpt4 book ai didi

r - 从列中提取国家名称(或其他实体)

转载 作者:行者123 更新时间:2023-12-05 08:39:52 25 4
gpt4 key购买 nike

我有一个 data.framelocation 列中包含国家和城市,我想通过与 world.cities$ 匹配来提取前者country.etc 来自 library(maps) 的数据框(或任何其他国家/地区名称集合)。

考虑这个例子:

df <- data.frame(location = c("Aarup, Denmark",
"Switzerland",
"Estonia: Aaspere"),
other_col = c(2,3,4))

我尝试使用此代码

df %>% extract(location,
into = c("country", "rest_location"),
remove = FALSE,
function(x) x[which x %in% world.cities$country.etc])

但是我没有成功;我期待这样的事情:

          location other_col     country rest_location
1 Aarup, Denmark 2 Denmark Aarup,
2 Switzerland 3 Switzerland
3 Estonia: Aaspere 4 Estonia : Aaspere

最佳答案

我们可以通过将所有国家/地区名称粘贴在一起来创建一个模式,并使用 str_extract_all 获取所有与 location 中的模式匹配的国家/地区名称并删除其中的单词匹配国家名称以获取 rest_location

library(maps)
library(stringr)

all_countries <- str_c(unique(world.cities$country.etc), collapse = "|")
df$country <- sapply(str_extract_all(df$location, all_countries), toString)
df$rest_location <- str_remove_all(df$location, all_countries)
#OR can also do
#df$rest_location <- str_remove_all(df$location, df$country)

df
# location other_col country rest_location
#1 Aarup, Denmark 2 Denmark Aarup,
#2 Switzerland 3 Switzerland
#3 Estonia: Aaspere 4 Estonia : Aaspere

country使用sapplytoString,因为如果location有多个国家名称,它们都会连接在一个字符串中。

关于r - 从列中提取国家名称(或其他实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com