从参考中提取日期
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 5
或 6
,因此 ^(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"
我想提取列引用的日期(我想从 (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 5
或 6
,因此 ^(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"