【问题标题】:Different Date Formats in R [duplicate]R中的不同日期格式[重复]
【发布时间】:2019-01-02 16:35:27
【问题描述】:

在我的 R 数据集中有一个 data$date 变量,由两种不同的文字组成:有些是 dd-mmm-yy(例如“14-nov -17") 和其他是 ddMMMyyyy(例如“14APR2016”)。

我在这里卡住了。我怎样才能让它们都变成日期格式?

谢谢

【问题讨论】:

    标签: r date


    【解决方案1】:

    一个选项是parse_date_time from lubridate,它可以采用多种Date 格式

    library(lubridate)
    parse_date_time(v1, c("%d-%b-%y", "%d%b%Y"))
    #[1] "2017-11-14 UTC" "2016-04-14 UTC"
    

    或者使用来自anytimeanydate。但是,应用anydate,检查是否所有formats 都已经存在

    library(anytime)
    getFormats()
    

    如果缺少某些formats,请使用addFormats添加它

    addFormats("%d-%b-%y")
    

    然后在日期的列/向量上应用anydate

    anydate(v1)
    #[1] "2017-11-14" "2016-04-14"
    

    数据

    v1 <- c("14-nov-17", "14APR2016")
    

    【讨论】:

    • 非常感谢它完美的工作!很棒的包。
    • @CactusTown 感谢 cmets。也可以查看here
    【解决方案2】:

    另一个选项,如果你想使用 base R 和 like 正则表达式:

    data$date <- as.Date(sub('(\\d{2})(\\w{3})(\\d{2})(\\d{2})', '\\1-\\2-\\4', data$date),
                         format = "%d-%b-%y")
    

    【讨论】:

    • 不,只是说不。当存在合适的库时,永远不要使用正则表达式进行数据解析。
    • @DirkEddelbuettel 我同意 99% 的时间(这种情况就是其中之一)最好使用合适的库。有时,如果代码与使用不同平台的人共享,我会避免只帮助一个计算的库,因为包管理和安装会产生更多的依赖关系和出错的机会。您是否会争辩说,为了更简洁的代码,它仍然会更好?
    猜你喜欢
    • 1970-01-01
    • 2020-11-17
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2014-01-12
    相关资源
    最近更新 更多