Преобразуйте время в виде часов и минут из трех-четырех цифр в кадре данных в минуты - PullRequest
0 голосов
/ 20 июня 2019

У меня есть фрейм данных со столбцом с именем "time" (у которого есть целочисленный класс).Время указывается тремя или четырьмя цифрами, например, 514, что означает 5:14, или 1914, что означает 19:14.Мне нужно создать новый столбец «время_2», который будет иметь время столбца «время», но только показывает минуты.Например, если строка 1 имеет значение «514» для столбца «время», необходимо перейти к новому столбцу с именем «время_2» с первым значением «314» минут.

Я пытался«удалите» первую цифру, а затем умножьте ее на 60, и следующие две цифры суммируют ее с последней.Однако я не смог этого сделать, и тот факт, что есть также данные с четырьмя цифрами, заставил меня остановиться и искать какую-то помощь.Я просто не знаю, как это сделать.Я действительно ценю некоторую помощь.

(Язык: R)

Ответы [ 3 ]

0 голосов
/ 20 июня 2019

Если ваше время никогда не выходит за пределы окна 00: 00-23: 59, вы можете использовать as.difftime из базы R:

x <- c(514,1914)

as.difftime(sprintf("%04d", x), format="%H%M", units="mins")
#Time differences in mins
#[1]  314 1154

Время за пределами этого диапазона можно решить, используя немногоарифметика:

as.numeric(
  as.difftime(x %/% 100 + (x %% 100)/60, units="hours"),
  units="mins"
)
#[1]  314 1154
0 голосов
/ 20 июня 2019

более простым способом:

library(lubridate)
time <- c(521,1914)
60 *hour(parse_date_time(time, "HM"))+ minute(parse_date_time(time, "HM"))
0 голосов
/ 20 июня 2019

Преобразуйте числа в timestamp и извлеките часы и минуты, используя substr

library("lubridate")

InPut
time <- c(521,1914)
time <- substr(as.POSIXct(sprintf("%04.0f", time), format='%H%M'), 12, 16) # Extracting hours and minutes using substr
time <- as.POSIXct(x = time, format = "%H:%M", tz = "UTC")
hour(time) * 60 + minute(time)

OutPut:
[1]  321 1154
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...