Анализировать время и конвертировать в минуты - PullRequest
6 голосов
/ 09 июля 2020

Данные выглядят так.

data$arrival_time: int  1245 1345 1805 1950 710 755 2115 2215 615 730 ...
data$real_time   : int  1256 1423 1859 2105 712 1009 2139 2344 542 946 ...

Например, 1245 означает 12:45, а 1345 означает 13:45.

И я просто хочу преобразовать 12:45 в 765 и 13:45 в 825, поэтому format(hour:minutes) можно преобразовать в минуты. (см. 12 60 + 450 = 765 и 13 60 + 45 = 825)

Как преобразовать время в минуты?

Ответы [ 3 ]

6 голосов
/ 09 июля 2020

Модульная арифметика c - ваш друг. Два полезных оператора R:

  • %/% выполняет целочисленное деление, например, 5 %/% 2 равно 2, а 38 %/% 3 равно 12
  • %% - оператор по модулю / остатку, например 5 %% 2 равно 1, а 38 %% 3 равно 2

Для положительных целых чисел, где m<n, мы всегда имеем n = m*(n %/% m) + n %% m.

Мы можем использовать это, чтобы помочь, распознавая «часовая» часть вашего ввода дается x %/% 100, а «минута» дается x %% 100, поэтому ваш ответ:

60 * (x %/% 100) + ( x %% 100 )
#    ^ hours   ^   ^ minutes  ^
3 голосов
/ 09 июля 2020

Вы можете попробовать математический подход, например,

x <- c(1245, 1345, 710, 2115, 542, 946)

(floor(x / 100) * 60) + (x - round(x, -2))
#[1]  765  825  430 1275  342  586
3 голосов
/ 09 июля 2020

Вы можете использовать floor и %%.

v <- c(1245, 1345, 1805, 1950, 710, 755, 2115, 2215, 615, 730, 000)

floor(v/100)*60 + v %% 100
# [1]  765  825 1085 1190  430  475 1275 1335  375  450    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...