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

如何对tibble中的字符串进行拆分,将球队名称拆分为城市和吉祥物两列

实现代码(基于tidyverse生态,可直接运行)

library(tidyverse)

# 直接复用你原有的原始球队文本,不需要手动修改原始数据
raw_team_text <- "City, Mascot,
  Arizona Diamondbacks
  Atlanta Braves
  Baltimore Orioles
  Boston Red Sox
  Chicago White Sox
  Chicago Cubs
  Cincinnati Reds
  Cleveland Indians
  Colorado Rockies
  Detroit Tigers
  Houston Astros
  Kansas City Royals
  Los Angeles Angels
  Los Angeles Dodgers
  Miami Marlins
  Milwaukee Brewers
  Minnesota Twins
  New York Yankees
  New York Mets
  Oakland Athletics
  Philadelphia Phillies
  Pittsburgh Pirates
  San Diego Padres
  San Francisco Giants
  Seattle Mariners
  St. Louis Cardinals
  Tampa Bay Rays
  Texas Rangers
  Toronto Blue Jays
  Washington Nationals
  "

# 自动清洗+拆分逻辑
team_tibble <- raw_team_text %>%
  # 去掉开头的冗余表头行
  str_remove("^City, Mascot,\\n") %>%
  # 按换行拆分出每支球队的条目
  str_split("\\n") %>%
  unlist() %>%
  # 清除每行前后的多余空格
  str_trim() %>%
  # 过滤掉空行
  .[str_length(.) > 0] %>%
  # 转为基础tibble
  tibble(team_full = .) %>%
  # 按自定义规则拆分城市和吉祥物
  separate_wider_regex(
    team_full,
    patterns = c(
      # 城市匹配规则,后续有新增/修改球队直接调整这里的列表即可手动微调
      City = r"^(Arizona|Atlanta|Baltimore|Boston|Chicago|Cincinnati|Cleveland|Colorado|Detroit|Houston|Kansas City|Los Angeles|Miami|Milwaukee|Minnesota|New York|Oakland|Philadelphia|Pittsburgh|San Diego|San Francisco|Seattle|St. Louis|Tampa Bay|Texas|Toronto|Washington)",
      " ", # 匹配城市和吉祥物中间的分隔空格
      Mascot = ".*$" # 剩余部分全部归为吉祥物
    )
  )

兼容低版本tidyr的替代写法

如果你的tidyr版本低于1.2.0不支持separate_wider_regex,可以把拆分部分替换为extract函数实现同样效果:

team_tibble <- raw_team_text %>%
  str_remove("^City, Mascot,\\n") %>%
  str_split("\\n") %>%
  unlist() %>%
  str_trim() %>%
  .[str_length(.) > 0] %>%
  tibble(team_full = .) %>%
  extract(
    team_full,
    into = c("City", "Mascot"),
    regex = r"^(Arizona|Atlanta|Baltimore|Boston|Chicago|Cincinnati|Cleveland|Colorado|Detroit|Houston|Kansas City|Los Angeles|Miami|Milwaukee|Minnesota|New York|Oakland|Philadelphia|Pittsburgh|San Diego|San Francisco|Seattle|St. Louis|Tampa Bay|Texas|Toronto|Washington) (.*)$"
  )

最终输出的tibble已经拆分好City和Mascot两列,City字段可以直接用来和其他数据表做关联匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:57:02