You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取数据框country列中每个单元格的最后一个国家(支持多词国家名称)

提取单元格中的最后一个国家名称

我明白你的需求啦——要从每个包含多个国家(部分是带空格的双词名称)的单元格里,精准取出最后一个国家,还不想用拆分多列这种繁琐的方法。这里给你两个简洁高效的R语言解决方案,都能完美实现你的需求:

方法一:用正则表达式快速提取(推荐)

借助stringr包的str_extract函数,用正则匹配直接定位最后一个国家:

首先先构造示例数据(方便你测试):

df <- data.frame(
  country = c("Russia Russia", "USA UK, USA", "South Korea South Korea")
)

然后加载stringr包并执行提取:

library(stringr)

# 提取最后一个逗号之后的所有内容(无逗号则取整串)
df$last_country <- str_extract(df$country, "[^,]+$")

执行后查看结果:

df
#                  country    last_country
# 1          Russia Russia     Russia Russia
# 2         USA UK, USA              USA
# 3 South Korea South Korea South Korea South Korea

正则说明

[^,]+$的意思是:

  • [^,]+:匹配任意非逗号的字符(包括空格,所以双词国家名不会被拆分)
  • $:锚定到字符串末尾,确保取的是最后一段内容

方法二:拆分后取最后元素

如果你更习惯用拆分的思路,可以用str_split拆分后取每个列表的最后一项:

library(stringr)

# 按", "拆分每个字符串,然后取最后一个元素
df$last_country <- sapply(str_split(df$country, ", "), tail, n = 1)

这个方法同样能得到和上面一致的结果,而且不管单元格里有多少个国家(哪怕超过3个)都能自动适配,比你之前用separate手动指定列数灵活太多啦。

内容的提问来源于stack exchange,提问作者Serena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:24:09