首页 > 解决方案 > 将包含时间的列转换为日期

问题描述

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

这是我用来转换的代码:

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

这是什么原因造成的?

标签: rdate

解决方案


您可以使用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"

推荐阅读