r-as.POSIXct将一组时间变成一组数字



我有一个tibblemy_column,它有一列字符串,如下所示:

'1/25/2018 0:00:00'
'11/14/2019 14:25:00'
'4/7/2019 9:31:53'

当我运行时

lapply(my_column, as.POSIXct, format="%m/%d/%Y %H:%M:%S")

我收到了一堆大数字,而不是我想要的约会时间。是什么导致了这种不受欢迎的行为,我该如何解决?

您不需要使用lapply(),因为asPOSIXct()是一个矢量化函数,就像许多R的函数一样。使用lapply()时,输出存储在列表中,将其分配为表列会遇到问题。

如果你想返回一个向量,这样你就可以把它分配给你的表列,你可以这样做:

df$my_column = as.POSIXct(df$my_column, format = "%m/%d/%Y %H:%M:%S")

或者您可以使用lubridate库,它的效率略高。像这样:

library(lubridate)
df$my_column <- parse_date_time(df$my_column, '%m/%d/%y %H:%M:%S')

这是输出:

[1] "2018-01-25 00:00:00 -02" "2019-11-14 14:25:00 -03" "2019-04-07 09:31:53 -03"

注意作为矢量的输出(使用矢量化函数(与使用lapply()时的输出之间的差异,如下所示:

[[1]]
[1] "2018-01-25 -02"
[[2]]
[1] "2019-11-14 14:25:00 -03"
[[3]]
[1] "2019-04-07 09:31:53 -03"

最新更新