【发布时间】:2017-02-28 18:30:21
【问题描述】:
那里。
我知道这可能是一个愚蠢的问题,但非常感谢您的回答。 我有两列以“HH:MM:SS”的格式命名“开始时间”和“结束时间”,我需要做的是将它们转换为十进制值并将它们连接在一起。
更具体地说,这里有一个例子: “开始时间”栏:09:00:00 “结束时间”栏:10:00:00 最终结果:9-10
我知道如何在 mysql 中做到这一点,但是任何解决方案如何在 R 中完成它?非常感谢。
【问题讨论】:
那里。
我知道这可能是一个愚蠢的问题,但非常感谢您的回答。 我有两列以“HH:MM:SS”的格式命名“开始时间”和“结束时间”,我需要做的是将它们转换为十进制值并将它们连接在一起。
更具体地说,这里有一个例子: “开始时间”栏:09:00:00 “结束时间”栏:10:00:00 最终结果:9-10
我知道如何在 mysql 中做到这一点,但是任何解决方案如何在 R 中完成它?非常感谢。
【问题讨论】:
这是一个将时间转换为十进制的函数,假设您需要十进制小时:
# 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 <- h+(m/60)+(s/60/60),因为它只有六十进制。