从参考中提取日期

Extract date from a reference

我想提取列引用的日期(我想从 (21510000XXX -> 10/2015) 传递。问题是,2015 年和 2016 年的引用与2017 年。

是这样的:

DF<-c(21612000675, 21612000494, 20170100011, 21507000583, 21508000306)

DF [1] 21612000675 21612000494 20170100011 21507000583 21508000306

第一个是 2016 年第 12 个月(“216”,“12”数字),第三个是不同的,因为整个 2017 年,所以 2017 年第 1 个月(“2017”,“01”, number),最后一个,作为2015年,与2016年相同,所以2015年08月("2015", "08", number)

您可以尝试使模式保持一致。例如,

gsub("^(21)(5|6)", "\10\2", DF)
> [1] "210612000675" "210612000494" "20170100011"  "210507000583" "210508000306"

看看?gsub

第一个参数是要匹配的模式,在本例中是 开头的任何字符串,字符串 21 后跟 either 56,因此 ^(21)(5|6)

第二个参数是替换,在本例中,在您的模式中的第一个和第二个 "capture groups" 之间放置一个 0。第三个参数是你要修改的内容。

试试这个!

library(dplyr)
library(stringr)

ym <- str_extract(DF, '^(215|216|2017)[0-9]{2}') %>%
        gsub(pattern = '^215', replacement = '2015') %>%
        gsub(pattern = '^216', replacement = '2016') %>%
        gsub(pattern = '(20[0-9]{2})', replacement = '\1\/')
> ym
[1] "2016/12" "2016/12" "2017/01" "2015/07" "2015/08"

编辑:

如果你想提前几个月尝试:

ym <- str_extract(DF, '^(215|216|2017)[0-9]{2}') %>%
        gsub(pattern = '^215', replacement = '2015') %>%
        gsub(pattern = '^216', replacement = '2016') %>%
        gsub(pattern = '(20[0-9]{2})([0-9]{2})', replacement = '\2\/\1')
> ym
[1] "12/2016" "12/2016" "01/2017" "07/2015" "08/2015"