【问题标题】:How to extract year and date out of a string in R [closed]如何从R中的字符串中提取年份和日期[关闭]
【发布时间】:2014-03-14 08:19:19
【问题描述】:

我有一个字符列表,其中包含“31DEC2005”等条目。我想将年份提取为整数 2005,以及从中提取日期月份“31DEC”。请提出一种方法。谢谢。

【问题讨论】:

  • r中是否有left()、mid()、right()、substring()等函数?你研究过这任何吗?我不知道r,但想象一下我可以在一分钟内找到这个。
  • 我搜索了日期功能并尝试了大约 20 分钟,然后才发布问题。如果我知道答案,我肯定不会发帖。
  • 在 R 控制台中运行 ?Date 会显示一个使用 format 函数的示例,而 ?date 会给出一个更好的 format 示例。你在哪里搜索的?
  • 这个问题可能没有太多的研究,但应该记住,SO 是程序员的帮助站点。对我来说,这个问题包含足够的信息来正确回答,重点是在 SO 的框架内,因此就足够了。我不质疑关闭问题的决定,因为可能有大量重复,但我不同意人们在这里投反对票。惩罚不知道可能被有经验的用户认为简单的解决方案的人是残酷的。

标签: regex r date


【解决方案1】:

我认为也许函数 Date 比正则表达式更好,试试:

as.Date("31DEC2005", "%d%b%Y")

【讨论】:

    【解决方案2】:

    ?substr:

    substr("31DEC2005",1,5)

    自动化:

    start<-c(1,3,6) 
    stop<-c(2,5,9)
    lapply(seq(1,3),function(i)substr("31DEC2005",start[i],stop[i]))
    

    【讨论】:

      【解决方案3】:

      这是将年份提取为整数的另一种方法:

      x <- c("31DEC2005", "28FEB2012", "16JUL2002", "01JAN2007")
      sub("[[:digit:]]+[[:alpha:]]+","", x)
      #[1] "2005" "2012" "2002" "2007"
      

      例如,使用data.table 包中的日期函数从@bartektartanus 的解决方案中最容易提取日期月份:

      y <- as.Date(x, "%d%b%Y")
      library(data.table)
      month(y)
      #[1] 12  2  7  1
      mday(y)
      #[1] 31 28 16  1
      paste(mday(y), month(y), sep = "-")
      #[1] "31-12" "28-2"  "16-7"  "1-1"  
      

      此解决方案也适用于一年:

      year(y)
      #[1] 2005 2012 2002 2007
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-11
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 2016-02-10
      • 2021-12-05
      相关资源
      最近更新 更多