Преобразовать собственный формат продолжительности времени в миллисекунды - PullRequest
0 голосов
/ 04 марта 2020

Вот пример формата продолжительности времени:

16984  = 16 second 984 milliseconds
214032 = 2 minutes 14 seconds, 032 milliseconds
1649871 = 16 minutes 49 seconds and 871 milliseconds

Таким образом, похоже, что формат продолжительности времени в удобочитаемом формате равен minutes:seconds:milliseconds

Я написал функцию для преобразования это, но я знаю, что это не надежно. Я знаю, что длина строки будет до 2

convert.to.ms <- function(str) {

  str <- as.numeric(str)

  ms <- c()
  ss <- c()
  min <- c()
  nchar(str)
  total.ms <-c()

  if(nchar(str) == 6) {

    ms  <- as.numeric(substr(str, nchar(str)-2, nchar(str)))

    ss  <- as.numeric(substr(str, nchar(str)-4, nchar(str)-3))

    min <- as.numeric(substr(str, 0, 1))
    total.ms <- (sum (ms + ss*1000 + min*60000))


  } else if(nchar(str) == 5) {

    ms  <- as.numeric(substr(str, nchar(str)-2, nchar(str)))

    ss  <- as.numeric(substr(str, nchar(str)-4, nchar(str)-3))
    total.ms <- (sum (ms + ss*1000))
  }
  total.ms
}

Я пытался использовать lubridate безрезультатно

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Охватите цифру вашего ввода

prop.time.format.to.milliseconds <- function(ptf) {
    ms <- as.numeric(ptf) %% 1000
    ss <- floor(as.numeric(ptf)/1000) %% 100
    mm <- floor(as.numeric(ptf)/100000)
    mm*60000 + ss*1000 + ms
}
1 голос
/ 04 марта 2020

Использование ввода tt, указанного в примечании в конце:

60 * 1000 * (tt %/% 100000) + 1000 * (tt %/% 1000 %% 100) + (tt %% 1000)
## [1]   16984  134032 1009871

Примечание

Мы предполагаем, что ввод:

tt <- c(16984, 214032, 1649871)
...