2017-02-28 81 views
-3

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

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

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

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

回答

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/12)+(s/12/60) 
    return(xdec) 
} 

hhmmss2dec(asdf) 
14.911111 12.000000 6.151389 3.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" 
相关问题