【问题标题】:How to add a - to a date in r?如何将 - 添加到 r 中的日期?
【发布时间】:2019-06-21 00:28:44
【问题描述】:

我的数据集中的日期格式如下:

“4252001”“5092001”“4242001”“5092001”“5192001”“6292001”“10242001”

我想在它们之间添加一个破折号 (-),所以它们看起来像这样:

“4-25-2001”“5-09-2001”“4-24-2001”“5-09-2001”“5-19-2001”“6-29-2001”“10-24- 2001"

然后我想将它们转换成r中的时间序列数据。

在我的一生中,我无法弄清楚如何在这些日期中添加破折号。

此外,根据月份,某些日期有 7 或 8 个字符。在试图弄清楚如何将它们制成日期时,这是一个重要的考虑因素,我想将其传递给任何想提供帮助的人。

【问题讨论】:

    标签: r date time-series character recode


    【解决方案1】:

    你可以使用

    x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001")    
    y = sub('(\\d{2})(\\d{4})$', '-\\1-\\2', x)
    ##[1] "4-25-2001"  "5-09-2001"  "4-24-2001"  "5-09-2001"  "5-19-2001" 
    ##[6] "6-29-2001"  "10-24-2001"
    

    然后转换为日期

    as.Date(y, format = '%m-%d-%Y')
    

    【讨论】:

    • 困扰我一整天的东西,让你秒了!非常感谢您的帮助!
    【解决方案2】:

    只是做:

    x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001") 
    
    as.Date(sprintf('%08d',as.numeric(x)),'%m%d%Y')
    
    [1] "2001-04-25" "2001-05-09" "2001-04-24" "2001-05-09" "2001-05-19" "2001-06-29" "2001-10-24"
    

    【讨论】:

    • 太棒了!这也很有帮助!
    【解决方案3】:

    使用lubridate,更简单:

    x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001")
    
    library(lubridate)
    
    mdy(as.numeric(x))
    
    [1] "2001-04-25" "2001-05-09" "2001-04-24" "2001-05-09" "2001-05-19" "2001-06-29" "2001-10-24"
    

    【讨论】:

    • 太棒了!我不知道这个包!谢谢!
    猜你喜欢
    • 2012-05-06
    • 2010-10-08
    • 2016-10-28
    • 2014-11-28
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多