r Преобразование из миллисекунд в часы и минуты - PullRequest
1 голос
/ 02 октября 2019

У меня есть набор времен в миллисекундах, которые я хочу преобразовать в чч: мм. Примером набора данных будет:

data <- c(5936500, 5438500, 3845400, 7439900, 5480200, 6903900)

Я получаю это с помощью ручного расчета, но оно не дает мне правильное значение для минут.

> data/1000/60/60

[1] 1.649028 1.510694 1.068167 2.066639 1.522278 1.917750

Я пробовал это

format(as.POSIXct(Sys.Date())+data, "%H:%M")
[1] "12:01" "17:41" "07:10" "21:38" "05:16" "16:45"

но это даже не близко. Есть мысли по этому поводу?

Спасибо!

1 Ответ

1 голос
/ 02 октября 2019

Нулевую точку мы можем получить, выполнив:

strftime(as.POSIXlt.numeric(0, format="%OS", origin="1970-01-01") - 7200, format="%R")
# [1] "00:00"

Соответственно:

t.adj <- 0
res <- strftime(as.POSIXlt.numeric(v/1000, format="%OS", origin="1970-01-01") - t.adj*3600, 
                format="%R", tz="GMT")
res
# [1] "01:38" "01:30" "01:04" "02:03" "01:31" "01:55"
class(res)
# [1] "character"

Дата не имеет значения, поскольку:

class(res)
# [1] "character"

Обратите внимание, , что это решение может зависеть от вашего Sys.getlocale("LC_TIME"). В приведенном выше решении есть дополнительная настройка часов t.adj*, однако в моем личном стандарте она установлена ​​на ноль, чтобы получить правильные значения.

Данные

v <- c(5936500, 5438500, 3845400, 7439900, 5480200, 6903900)

* Для автоматизации локализации вы можете посмотреть ответы на этот вопрос .

...