【问题标题】:Converting Date Columns in R ("character" into Date format)将 R 中的日期列(“字符”转换为日期格式)
【发布时间】:2021-03-07 12:09:22
【问题描述】:

我有一个示例日期列作为大型数据集的一部分,以下日期采用多种格式。

我需要将下面提到的转换成日期格式,请帮我解决一下。

22-04-2015 2015 年 4 月 8 日 18-04-2015 2015 年 5 月 7 日 26-05-2015 2015 年 6 月 12 日 24-06-2015 23-06-2015

【问题讨论】:

    标签: r dataframe date format character


    【解决方案1】:

    您是否尝试过随时使用R包进行日期转换?

    > library(anytime)
    > datemix <- c("22-04-2015", "4/8/2015", "18-04-2015", "5/7/2015")
    > anydate(datemix)
    [1] NA "2015-04-08" NA "2015-05-07"
    

    您注意到第一个和第三个字符日期是 NA。这是因为当前定义的包anytime 不包括这种格式“d-m-y”。使用 addFormats() 命令很容易添加这种格式,如下所示

    > addFormats("%d-%m-%Y")
    > datemix <- c("22-04-2015", "4/8/2015", "18-04-2015", "5/7/2015")
    > anydate(datemix)
    [1] "2015-04-22" "2015-04-08" "2015-04-18" "2015-05-07"
    

    输出日期转换为 YYYY-MM-DD 的 ISO 格式。

    您可以使用getFormats() 命令随时 探索所有格式。这是 R CRAN https://cran.r-project.org/web/packages/anytime/anytime.pdf987654321@上随时的链接

    【讨论】:

      【解决方案2】:

      试试lubridate。函数guess_formats() 允许定义数据的可能格式(如果需要,您可以添加其他格式),然后您可以使用as.Date() 使用先前定义的格式获取正确类中的日期。代码如下:

      library(lubridate)
      #Dates
      vecdate <- c('22-04-2015', '4/8/2015','18-04-2015','5/7/2015','26-05-2015',
                   '6/12/2015','24-06-2015','23-06-2015')
      #Formats
      formats <- guess_formats(vecdate, c("dmY"))
      dates <- as.Date(vecdate, format=formats)
      

      输出:

      dates
       [1] "2015-04-22" "2015-08-04" "2015-04-18" "2015-07-05" "2015-05-26" "2015-12-06" "2015-06-24"
       [8] "2015-06-23" "2015-04-22" "2015-08-04" "2015-04-18" "2015-07-05" "2015-05-26" "2015-12-06"
      [15] "2015-06-24" "2015-06-23"
      

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2013-12-28
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多