regex - 从字符串和文本数据中提取年份

标签 regex r lubridate stringi

我需要从具有这些性质的值的向量中提取开始年份和结束年份。

 yr<- c("June 2013 – Present (2 years 9 months)", "January 2012 – June 2013 (1 year 6 months)","2006 – Present (10 years)","2002 – 2006 (4 years)")


 yr
 June 2013 – Present (2 years 9 months)
 January 2012 – June 2013 (1 year 6 months)
 2006 – Present (10 years)
 2002 – 2006 (4 years)

我期待这样的输出。有没有人有建议?
 start_yr       end_yr

2013            2016
2012            2013
2006            2016
2002            2006

最佳答案

x <- gsub("present", "2016", yr, ignore.case = TRUE)
x <- regmatches(x, gregexpr("\\d{4}", x))
start_yr <- sapply(x, "[[", 1)
end_yr <- sapply(x, "[[", 2)

这将开始年份和结束年份保存在 2 个单独的变量中,如果您希望将它们放在一个变量中,只需编辑代码并使 y$start_yr y$end_yr

关于regex - 从字符串和文本数据中提取年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710387/

相关文章:

java - 负向后查找中的字范围或\w

在日期过滤器中使用多个月份时,行不合并 R 中的重复项

r - 如何在 R 中跨非连续行删除重复的日期序列?

r - 使用 lubridate 根据日期创建因子

ruby - 如何使用正则表达式选择由相同字母组成的单词?

c# - 模型中属性的正则表达式验证

python - 如何从句子中提取字符ngram? - Python

r - 需要数据框中高级分组和数据操作的帮助

python - rpy2 中的错误 - 没有(非缺失)观察结果

r - 优化列表函数以避免 R 中的循环