如何拆分含重复分隔符的字符串?提取电影名年份生成新列
拆分电影名称中的年份并生成数据框
嘿,这里有两种实用的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
相关产品推荐
相关产品推荐

