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

R语言拆分结构不同的列提取姓氏和城市的解决方案

提取姓氏与城市字段的实现方案

由于你的数据列结构不统一,用固定列数的separate()拆分无法适配不同行的字段数量,直接按规则用正则提取是更高效的方案,适配性更强:

方案1:tidyverse 套件实现(推荐)

借助stringr的正则提取函数直接匹配目标内容,无需拆分多列:

# 加载依赖包
library(tidyverse)

df <- df %>%
  mutate(
    # 提取第一个逗号前的内容作为姓氏
    姓氏 = str_extract(Name, "^[^,]+"),
    # 提取最后一个空格后、末尾英文句号前的内容作为城市
    城市 = str_extract(Name, "(?<= )[^ ]+(?=\\.$)")
  )

规则说明:

  • 姓氏正则^[^,]+:从字符串开头匹配所有非逗号字符,正好对应第一个逗号前的内容
  • 城市正则(?<= )[^ ]+(?=\\.$):先匹配最后一个空格的位置,再读取所有非空格字符,直到字符串末尾的英文句号为止,正好命中目标城市字段

方案2:基础R实现(无需加载第三方包)

用基础的正则替换函数也可以实现相同效果:

# 提取姓氏
df$姓氏 <- sub(",.*", "", df$Name)
# 提取城市
df$城市 <- sub(".* (.*)\\.$", "\\1", df$Name)

如果存在部分行不符合规则导致提取出NA的情况,可以额外加过滤或异常值修正逻辑处理即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:24:03