将包含时间的列转换为日期

时间:2020-10-06 09:02:29

标签: r date

我有一个包含时间的列,格式为20:41、00:01、23:59。我正在尝试将此列转换为Date类型,但是我的代码会生成所有NA值。

这是我用来转换的代码:

my_df$times<- as.Date(my_df$times, "%h:%m")

是什么原因造成的?

1 个答案:

答案 0 :(得分:2)

您可以使用as.POSIXct将时分转换为日期时间值。

x <- c('20:41', '00:01', '23:59')
as.POSIXct(x, format = '%H:%M', tz = 'UTC')
#[1] "2020-10-06 20:41:00 UTC" "2020-10-06 00:01:00 UTC" "2020-10-06 23:59:00 UTC"
#Or with strptime
#strptime(x, format = '%H:%M', tz = 'UTC')

如果我们想将日期作为单独的向量包含进来,可以使用paste将日期和时间组合在一起,然后使用as.POSIXct

x <- c('20:41', '00:01', '23:59')
y <- c('2020-01-02', '2020-03-03', '2020-09-06')

as.POSIXct(paste(y, x), format = '%Y-%m-%d %H:%M', tz = 'UTC')
#[1] "2020-01-02 20:41:00 UTC" "2020-03-03 00:01:00 UTC" "2020-09-06 23:59:00 UTC"