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

在R语言中拆分fiction_work列为work、author、year三列的方法

拆分含年份的文本列解决方案

假设你的fiction_work列内容格式类似"作品名, 作者名 (YYYY)",可以用两种方法拆分出work、author、year三列:

方法一:分步拆分(更直观)

先用separate拆分出作品名和「作者+年份」的组合列,再拆分作者和年份,最后清理年份的括号:

library(tidyr)
library(stringr)

# 第一步:拆分作品名和作者年份组合
separated <- separate(total, col = fiction_work, into = c("work", "author_year"), sep = ",\\s*")

# 第二步:拆分作者和年份,以「空格+左括号」为分隔符
separated <- separate(separated, col = author_year, into = c("author", "year"), sep = "\\s*\\(")

# 清理年份列的右括号
separated$year <- str_remove(separated$year, "\\)")

方法二:正则一步提取(更高效)

用extract配合正则表达式,直接匹配出三个部分:

library(tidyr)

separated <- extract(total, col = fiction_work, 
                     into = c("work", "author", "year"),
                     regex = "^(.*?),\\s*(.*?)\\s*\\((\\d{4})\\)$")

正则说明:

  • ^(.*?),\\s*:匹配开头到逗号的内容(作品名),忽略逗号后的空格
  • (.*?)\\s*\\(:匹配逗号后到左括号前的内容(作者名),忽略作者和左括号间的空格
  • (\\d{4}):匹配括号内的四位数字年份
  • \\)$:匹配结尾的右括号

如果你的文本格式有细微差异(比如年份不是四位、作者和括号间无空格),只需调整正则中的匹配规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:10:25