我有一个包含时间的列,格式为20:41、00:01、23:59。我正在尝试将此列转换为Date类型,但是我的代码会生成所有NA值。
这是我用来转换的代码:
my_df$times<- as.Date(my_df$times, "%h:%m")
是什么原因造成的?
答案 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"