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

如何拆分含重复分隔符的字符串?提取电影名年份生成新列

拆分电影名称中的年份并生成数据框

嘿,这里有两种实用的R语言方法帮你完成需求——从电影名称字符串里提取年份,同时整理出干净的电影标题,最后组合成带新列的数据框:

方法一:使用stringr包(推荐,字符串处理更直观)

stringr是tidyverse系列里专门处理字符串的包,语法简洁易懂:

首先加载包(如果没安装先运行install.packages("stringr")):

library(stringr)

然后处理你的向量x:

# 提取年份:匹配结尾的(四位数字),去掉括号后转成整数
year <- str_extract(x, "\\((\\d{4})\\)$") %>% 
  str_remove_all("\\(|\\)") %>% 
  as.integer()

# 提取干净的电影标题:去掉结尾的年份部分(包括可能的前置空格)
movie_title <- str_remove(x, "\\s*\\((\\d{4})\\)$")

# 组合成数据框
movie_df <- data.frame(
  Title = movie_title,
  Year = year,
  stringsAsFactors = FALSE
)

运行后查看结果:

print(movie_df)

输出会是:

Title Year
1 Ace Ventura: When Nature Calls 1995
2  Twelve Monkeys (a.k.a. 12 Monkeys) 1995
3          Seven (a.k.a. Se7en) 1995
4      French Twist (Gazon maudit) 1995
5    Rumble in the Bronx (Hont faan kui) 1995

方法二:Base R原生函数(无需额外安装包)

如果不想加载新包,用base R的sub函数也能实现:

# 提取年份:用正则捕获组提取四位数字
year <- as.integer(sub(".*\\((\\d{4})\\)$", "\\1", x))

# 提取电影标题:替换掉结尾的年份部分
movie_title <- sub("\\s*\\((\\d{4})\\)$", "", x)

# 生成数据框
movie_df <- data.frame(
  Title = movie_title,
  Year = year,
  stringsAsFactors = FALSE
)

这个方法和上面的结果完全一致,适合轻量需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:27:29