代码之家  ›  专栏  ›  技术社区  ›  Álvaro Rodríguez

从引用中提取日期

  •  0
  • Álvaro Rodríguez  · 技术社区  · 9 年前

    我想提取列引用的日期(我想从(2151000xxx->2015年10月)传递)。问题是,2015年和2016年的参考文献与2017年的参考文献不同。

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

    测向 [1] 21612000675 21612000494 20170100011 21507000583 21508000306

    2 回复  |  直到 9 年前
        1
  •  1
  •   Luís Telles    9 年前

    试试这个!

    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"
    
        2
  •  0
  •   juan    9 年前

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

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

    ?gsub .

    第一个参数是要匹配的模式,在本例中,任何 开始于 21 5 6 因此 ^(21)(5|6) .

    0