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
相关产品推荐
相关产品推荐

