【问题标题】:Converting time (hh:mm:ss) to decimal values in R将时间(hh:mm:ss)转换为R中的十进制值
【发布时间】:2017-02-28 18:30:21
【问题描述】:

那里。

我知道这可能是一个愚蠢的问题,但非常感谢您的回答。 我有两列以“HH:MM:SS”的格式命名“开始时间”和“结束时间”,我需要做的是将它们转换为十进制值并将它们连接在一起。

更具体地说,这里有一个例子: “开始时间”栏:09:00:00 “结束时间”栏:10:00:00 最终结果:9-10

我知道如何在 mysql 中做到这一点,但是任何解决方案如何在 R 中完成它?非常感谢。

【问题讨论】:

    标签: r date


    【解决方案1】:

    这是一个将时间转换为十进制的函数,假设您需要十进制小时:

    # fake data
    asdf <- c("12:34:56","12:00:00","06:01:49","1:30:00")
    
    hhmmss2dec <- function(x) {
      xlist <- strsplit(x,split=":")
      h <- as.numeric(sapply(xlist,"[",1))
      m <- as.numeric(sapply(xlist,"[",2))
      s <- as.numeric(sapply(xlist,"[",3))
      xdec <- h+(m/60)+(s/60/60)
      return(xdec)
    }
    
    hhmmss2dec(asdf)
    12.582222 12.000000  6.030278  1.500000
    

    或者这个,它可能对你正在寻找的东西有用......

    starts <- c("10:00:00","12:34:56")
    ends <- c("12:00:00","14:20:00")
    
    hourthing <- function(start,end) {
      startlist <- strsplit(start,split=":")
      endlist <- strsplit(end,split=":")
      hstart <- sapply(startlist,"[",1)
      hend <- sapply(endlist,"[",1)
      out <- paste(hstart,hend,sep="-")
      return(out)
    }
    
    hourthing(starts,ends)
    "10-12" "12-14"
    

    【讨论】:

    • 我建议更正这一行 xdec &lt;- h+(m/60)+(s/60/60),因为它只有六十进制。
    • @avallecam 感谢您的关注。固定。
    猜你喜欢
    • 2016-05-09
    • 2015-03-12
    • 2013-10-30
    • 2017-10-15
    • 2023-03-22
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多