如何将时间转换为十进制

时间:2014-02-14 13:56:27

标签: r time

我有一个包含hh:mm:ss格式时间的大型数据集,我想将这些转换为十进制格式而忽略小时(hh)。我使用了strptime,但这似乎没有转换它。

更准确地说,我想将00:01:38更改为1,6333,将01:18:30更改为78,5

我如何在R?

中执行此操作

3 个答案:

答案 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)

您可以使用stringsplitsapply

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

刚刚扩展他的榜样: How to convert time (mm:ss) to decimal form in R

答案 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