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

在R中按字符串匹配递归拆分多作者信息并添加对应列

多作者姓名拆分到动态列的R实现

示例数据

先构造与需求匹配的测试数据:

library(tidyverse)

df <- tibble(
  id = 1:3,
  Author = c(
    "Last, First & Last, First",
    "Last, First & Last, First & Last, First & Last, First",
    "Last, First & Last, First & Last, First"
  )
)

批量拆分实现代码

使用tidyverse工具链可自动处理可变数量的作者,无需预设列数:

df_processed <- df %>%
  # 将每个作者拆分为单独行,分隔符为" & "
  separate_rows(Author, sep = " & ") %>%
  # 从"Last, First"格式中提取姓和名
  extract(Author, into = c("Last", "First"), regex = "(.*), (.*)") %>%
  # 按id分组,为每个作者分配序号
  group_by(id) %>%
  mutate(num = row_number()) %>%
  ungroup() %>%
  # 转换为宽格式,自动生成First1/Last1等列,缺失值填充为空
  pivot_wider(
    id_cols = id,
    names_from = num,
    values_from = c(First, Last),
    names_glue = "{.value}{num}",
    values_fill = ""
  )

代码说明

  • separate_rows:把一行中的多个作者拆分成多行,每个作者占一行,简化后续拆分逻辑
  • extract:通过正则表达式精准匹配"姓, 名"格式,一次性提取姓和名,比手动strsplit更稳定
  • row_number():为每个id下的作者按顺序编号,作为列名的数字后缀
  • pivot_wider:将长格式数据转换为需求的宽格式,names_glue控制列名格式,values_fill确保作者数量不足的位置显示为空

运行后得到的结果完全符合要求,且兼容单作者、多作者的所有场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:25:34