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

如何在R中提取数据框列中name字段的城市名称?

提取城市名称的两种实用方法

针对你这种格式固定的字符串,下面提供两种高效提取城市名的方案,适合批量处理:

方法一:用正则表达式(gsub实现)

虽然你觉得gsub不是最优,但这种场景下正则足够高效,且写法简单。核心是匹配name='之后到下一个单引号之间的内容:

# 假设你的数据框是df,目标列名为place_col
df$city <- gsub(".*name='([^']+)'.*", "\\1", df$place_col)

正则说明:

  • .*name=':匹配任意字符直到遇到name='
  • ([^']+):捕获所有非单引号的字符(就是我们要的城市名)
  • .*:匹配后面剩余的所有内容
  • \\1:替换为捕获到的第一个组(也就是城市名)

方法二:结构化解析(更稳妥)

由于这些字符串是R的函数调用格式,直接解析成表达式提取参数值,比正则更不容易出错(比如字符串格式有细微变化时):

  1. 先安装并加载rlang包(用于安全解析表达式):
install.packages("rlang")
library(rlang)
  1. 定义提取函数:
extract_city <- function(x) {
  # 捕获解析失败的情况,返回NA
  tryCatch({
    expr <- parse_expr(x)
    as.character(expr$name)
  }, error = function(e) NA_character_)
}
  1. 批量提取:
df$city <- sapply(df$place_col, extract_city)

原理:

parse_expr()把字符串转换成R可识别的表达式,直接提取name参数的值,完全不需要依赖字符匹配规则,格式兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:55:28