在R中将数字字段转换为时间格式

时间:2014-03-23 20:57:20

标签: r

我需要在R

中将数字字段转换为时间格式

我的数字字段也有点脏,但数据显示为

9,
1235,
1033,

每个号码都是午夜过后的分钟数。即数字“9”应解释为“午夜过了9分钟”。

我尝试使用strptime(1122, format="%H.%M.")

但我有一个错误。我得到NaN

请帮忙。

3 个答案:

答案 0 :(得分:3)

试试这个:

> library(chron)
> x <- c(9, 1235, 1033)
> times(x / (24 * 60))
[1] 00:09:00 20:35:00 17:13:00

答案 1 :(得分:1)

这是一个基础版本。您需要确保所有内容都包含4位数字:

vec <- c(9, 1235, 1033)
vec.pad <- sapply(vec, function(x) paste0(c(rep(0, 4 - nchar(x)), x), collapse=""))
strptime(vec.pad, format="%H%M")
# [1] "2014-03-23 00:09:00" "2014-03-23 12:35:00" "2014-03-23 10:33:00"

答案 2 :(得分:0)

POSIXct时间是以GMT格式生成的,我不知道可靠的方法来阻止这种情况:

> tim <- as.POSIXct(Sys.Date())+times*60
> tim
[1] "2014-03-22 17:09:00 PDT" "2014-03-23 13:35:00 PDT" "2014-03-23 10:13:00 PDT"
> tim <- as.POSIXct(Sys.Date(),tz="Americas/Los_Angeles")+times*60
> tim   # Any suggestions to improve this are welcome.
[1] "2014-03-22 17:09:00 PDT" "2014-03-23 13:35:00 PDT" "2014-03-23 10:13:00 PDT"

所以我加上7个小时来获得太平洋夏令时(我本地人):

> tim <- as.POSIXct(Sys.Date() )+times*60+3600*7
> tim
[1] "2014-03-23 00:09:00 PDT" "2014-03-23 20:35:00 PDT" "2014-03-23 17:13:00 PDT"

你可以得到一个字符输出,隐藏这些是&#34; GMT&#34;区域设置时间:

> tim <- as.POSIXct(Sys.Date() )+times*60
> format(tim, tz="GMT")
[1] "2014-03-23 00:09:00" "2014-03-23 20:35:00" "2014-03-23 17:13:00"

或没有日期:

> format(tim, "%H:%M:%S", tz="GMT")
[1] "00:09:00" "20:35:00" "17:13:00"