【问题标题】:How to convert "MMM DD,YYYY" to proper date format? [duplicate]如何将“MMM DD,YYYY”转换为正确的日期格式? [复制]
【发布时间】:2020-11-16 17:09:25
【问题描述】:

我有一列包含"mmm dd,yyyy" 格式的日期。

它们看起来像这样: "Dec 21, 2015" "Aug 23, 2018"

我尝试通过 as.Date("Dec 21, 2015")as.Date(as.character("Dec 21, 2015")) 将这些日期转换为适当的日期格式以进行进一步的数据处理,但都没有成功。

这是错误信息: Error in charToDate(x) : character string is not in a standard unambiguous format

我想知道将这种非标准数据格式正确转换为正确数据格式和类“YYYY-MM-DD”(例如“2015-12-21”)的好方法是什么?我应该使用正则表达式来解决这个问题吗?

非常感谢您的帮助!

【问题讨论】:

  • as.Date(c('Dec 21, 2015', 'Aug 23, 2018'), '%b %d, %Y')

标签: r lubridate


【解决方案1】:

使用润滑:

library(dplyr)
library(lubridate)
df <- data.frame(date = c('Dec 21, 2015','Aug 23, 2018'))
df
          date
1 Dec 21, 2015
2 Aug 23, 2018
df %>% mutate(date1 = mdy(df$date))
          date      date1
1 Dec 21, 2015 2015-12-21
2 Aug 23, 2018 2018-08-23

【讨论】:

    【解决方案2】:

    使用base

    x <- "Dec 21, 2015"
    
    as.Date(x, "%b %d, %y")
    #> [1] "2020-12-21"
    

    reprex package (v0.3.0) 于 2020 年 11 月 16 日创建

    根据您的日期变量的名称,它可能如下所示:

    df$date <- as.Date(df$date, "%b %d, %y")
    

    【讨论】:

      【解决方案3】:

      anydate 的选项来自anytime

      library(anytime)
      df$date <- anydate(df$date)
      df$date
      #[1] "2015-12-21" "2018-08-23"
      

      数据

      df <- data.frame(date = c('Dec 21, 2015','Aug 23, 2018'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-20
        • 2013-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多