将时间(hh:mm:ss)转换为R中的十进制值

时间:2017-02-28 18:30:22

标签: r date

那里。

我知道这可能是一个愚蠢的问题,但我真的很感激答案。 我有两个列命名"开始时间"和#34;结束时间"格式为" HH:MM:SS",我需要做的是将它们转换为十进制值并将它们连接在一起。

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

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

1 个答案:

答案 0 :(得分:0)

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

# 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"