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

R语言中拆分data.frame电影名字段,提取年份与完整片名

拆分电影名称中的年份并保留完整原名(含括号内容)

核心思路:通过正则表达式定位字符串末尾的年份括号,分别提取年份、移除年份部分保留带原始括号的电影名。

方法一:使用tidyverse(stringr包)

先加载依赖包,再处理数据:

library(tidyverse)

# 替换为你的实际data.frame
df <- tibble(
  movies_name = c("City of Lost Children, The (Cité des enfants perdus, La) (1995)",
                  "Blade Runner (1982)",
                  "Amélie (Le Fabuleux Destin d'Amélie Poulain) (2001)")
)

# 新增年份和电影名列
df <- df %>%
  mutate(
    # 提取年份:匹配末尾括号内的四位数字,去除括号
    year = str_extract(movies_name, "\\((\\d{4})\\)$") %>% str_remove_all("[()]"),
    # 提取完整电影名:移除末尾的年份括号及前面的空格
    movie_title = str_remove(movies_name, "\\s*\\(\\d{4}\\)$")
  )

# 查看结果
print(df)

方法二:使用Base R(无需额外包)

如果不想加载第三方包,用base R的正则函数处理:

# 替换为你的实际data.frame
df <- data.frame(
  movies_name = c("City of Lost Children, The (Cité des enfants perdus, La) (1995)",
                  "Blade Runner (1982)",
                  "Amélie (Le Fabuleux Destin d'Amélie Poulain) (2001)"),
  stringsAsFactors = FALSE
)

# 提取年份
df$year <- gsub(".*\\((\\d{4})\\)$", "\\1", df$movies_name)
# 提取完整电影名
df$movie_title <- gsub("\\s*\\(\\d{4}\\)$", "", df$movies_name)

# 查看结果
print(df)

正则规则说明

  • \\((\\d{4})\\)$:匹配字符串末尾的括号及其中四位数字,$确保只匹配最后一个括号,避免误抓其他括号内容。
  • \\s*\\(\\d{4}\\)$:匹配年份括号前的任意空格(0个或多个)+年份括号,移除这部分后剩下的就是带原始括号的完整电影名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:25:17