更改日期列的格式

Change Format of Date Column

我需要使用 RStudio 将一种日期格式转换为另一种日期格式,因为对于 lubridate 和其他与日期相关的函数,进一步的工作需要一种标准的明确格式。我在下面包含了一些示例和信息:

示例数据集:

Function,HiredDate,FiredDate
Waitress,16-06-01 12:40:02,16-06-13 11:43:12
Chef,16-04-17 15:00:59,16-04-18 15:00:59

HiredDateFiredDate 的当前日期格式 (POSIXlt):

"%y-%m-%d %H:%M:%S"

我希望 HireDateFiredDate 的日期格式为:

"%Y-%m-%d %H:%M:%S" / 2016-06-01 12:40:02

"%Y/%m/%d %H:%M:%S" / 2016/06/01 12:40:02

原则上,您可以使用strftime函数转换日期和时间:

    d <- "2016-06-01 12:40:02"
    strftime(d, format="%Y/%m/%d %H:%M:%S")
    [1] "2016/06/01 12:40:02"

你的情况是年份问题:

    d <- "16-06-01 12:40:02"
    strftime(d, format="%Y/%m/%d %H:%M:%S")
    [1] "0016/06/01 12:40:02"

按照Dave2e的建议,两位数的年份可以通过%y读取:

    strftime(d, format="%y/%m/%d %H:%M:%S")
    [1] "16/06/01 12:40:02"

假设你的数据来自20世纪和21世纪,你可以在HireDate和FireDate前面粘贴一个19或20:

    current <- 16
    prefixHire <- ifelse(substr(data$HireDate, 1, 2)<=currentYear,20,19)
    prefixFire <- ifelse(substr(data$FireDate, 1, 2)<=currentYear,20,19)
    data$HireDate = paste(prefixHire, data$HireDate, sep="")
    data$FireDate = paste(prefixFire, data$FireDate, sep="")

代码通过假设大于当前 ('16) 年份的任何日期实际上来自 20 世纪来生成前缀。然后将前缀粘贴到 HireDate 和 FireDate。