我有一个包含hh:mm:ss格式时间的大型数据集,我想将这些转换为十进制格式而忽略小时(hh)。我使用了strptime,但这似乎没有转换它。
更准确地说,我想将00:01:38
更改为1,6333
,将01:18:30
更改为78,5
。
我如何在R?
中执行此操作答案 0 :(得分:4)
这可能有一个润滑功能,但我会这样做:
x <- "01:18:30"
y <- (as.numeric(as.POSIXct(paste("2014-01-01", x))) -
as.numeric(as.POSIXct("2014-01-01 0:0:0")))/60
#[1] 78.5
忽略小时:
y%%60
#[1] 18.5
答案 1 :(得分:4)
您可以使用stringsplit
和sapply
dat<-c('00:01:38','01:18:30')
sapply(strsplit(dat,":"),
function(x) {
x <- as.numeric(x)
x[1]*60+x[2]+x[3]/60
}
)
结果:
[1] 1.633333 78.500000
积分归@Joris Meys
答案 2 :(得分:2)
编写一个为您进行转换的函数是相对微不足道的。假设您的输入是字符向量:
> decimateTime=function(time) {
+ time=as.numeric(unlist(strsplit(time, ":")))
+ time = time[1]*60+time[2]+time[3]/60
+ return(time)
+ }
> times=c('00:01:38', '01:18:30', '13:18:01')
> print(sapply(times,decimateTime))
00:01:38 01:18:30 13:18:01
1.633333 78.500000 798.016667