我有这个向量,表示记录为小时(0 到 24)和分钟(0 到 59)的时间。我想将其转换为 R 中的 %H:%M 时间格式,以便我可以使用 difftime 等函数。
str(SF5$ES_TIME)
int [1:11452] 1940 600 5 1455 1443 2248 1115 900 200 420 ...
这是我尝试过的,但在这两种情况下,我都收到错误:
>SF5$time1<-as.POSIXct(SF5$ES_TIME, format = "%H:%M",tz="EST")
Error in as.POSIXct.numeric(SF5$ES_TIME, format = "%H:%M", tz = "EST") :
'origin' must be supplied
SF5$time1<-as.POSIXct(as.character(SF5$ES_TIME), format="%H:%M",tz="")
> str(SF5$time1)
POSIXct[1:11452], format: NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA ...
任何帮助或阅读建议将不胜感激! 谢谢你, 奥蕾莉
最佳答案
嗯,错误消息告诉您提供来源
,一分钟是 60 秒,所以:
SF5 <- list(ES_TIME=as.integer(c(1940,600,5,1455,1443,2248,1115,900,200,420)))
x <- as.POSIXct(SF5$ES_TIME*60, origin="1970-01-01")
format(x, format="%H:%M")
#[1] "08:20" "10:00" "00:05" "00:15" "00:03" "13:28" "18:35" "15:00" "03:20" "07:00"
请注意,POSIXct
日期只是一个数字(带有类),因此您需要 format
调用来根据需要打印它 - 默认打印 x
将打印完整的日期信息(年/月/日等)。
...任何起源日期都可以,因为您不关心它,但 1970-01-01
是通常的起源...
关于r - 将变量转换为 %H :%M time format in R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10016412/