【发布时间】: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
我有一个示例日期列作为大型数据集的一部分,以下日期采用多种格式。
我需要将下面提到的转换成日期格式,请帮我解决一下。
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
您是否尝试过随时使用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@上随时的链接
【讨论】:
试试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"
【讨论】: