【问题标题】:Convert proprietary time duration format to milliseconds将专有的持续时间格式转换为毫秒
【发布时间】:2020-03-04 00:43:27
【问题描述】:

以下是持续时间格式的示例:

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 无济于事

【问题讨论】:

    标签: r time data-science iso8601


    【解决方案1】:

    拥抱你输入的数字

    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
    }
    

    【讨论】:

      【解决方案2】:

      使用末尾注释中显示的输入tt

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

      注意

      我们假设输入是:

      tt <- c(16984, 214032, 1649871)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        相关资源
        最近更新 更多