我有一个类似30, 2230, 130
的int列,是否有任何函数可以将它们按时间格式转换为30
到00:30
和130
到{{1 }}?我用过:
01:30
但它返回了一个错误:
format(strftime(col,format="%H:%M"), format="%H:%M")
我还需要在时间转换之后的时间之前添加 yy-mm-dd ,这样最终输出可能会像as.POSIXlt(x, tz=tz)::'origin' must be supplied
,{{1 }和"1980-05-28 00:30"
。
有人可以帮忙吗?
答案 0 :(得分:0)
您可以尝试使用as.POSIXct
和sprintf
以及paste
来创建日期/时间:
as.POSIXct(paste("1980-05-28", sprintf("%04d",c(130, 2030, 1120, 30,0120)),sep = " "),
format = "%Y-%m-%d %H%M")
# [1] "1980-05-28 01:30:00 BST" "1980-05-28 20:30:00 BST" "1980-05-28 11:20:00 BST"
# [4] "1980-05-28 00:30:00 BST" "1980-05-28 01:20:00 BST"
注意:解决方案类似于@ r2evans建议的解决方案。我试着简化一下。