将数字转换为R中的时间

将数字转换为R中的时间,r,R,我想将带有数字的数据帧列转换为小时(以数字表示),例如,如果值为75,我需要将其转换为1.15,或者如果值为180,我需要将其转换为3,依此类推。不一定是时间格式。我知道下面的功能是用户将数字转换为时间,但我尝试做的是不同的 x = c('834', '1534') time <- substr(as.POSIXct(sprintf("%04.0f", x), format='%H%M'), 12, 16) x=c('834','1534') 时间在我看来,你只需要简单的分钟到(

我想将带有数字的数据帧列转换为小时(以数字表示),例如,如果值为75,我需要将其转换为1.15,或者如果值为180,我需要将其转换为3,依此类推。不一定是时间格式。我知道下面的功能是用户将数字转换为时间,但我尝试做的是不同的

x = c('834', '1534')    
time <- substr(as.POSIXct(sprintf("%04.0f", x), format='%H%M'), 12, 16)
x=c('834','1534')

时间在我看来,你只需要简单的分钟到(分数)小时的转换

请注意,“75”实际上应该是1.25而不是1.15,这似乎是一个错误。如果这不是错误,请解释“75”如何变成1.15。

x = c('834', '1534', '180', '75')

as.numeric(x) / 60
#[1] 13.90000 25.56667  3.00000  1.25000

将秒数(如75)转换为十进制格式(如
minutes.seconds
)有点奇怪,但您可以这样做:

a <- 75
hour <- floor(a / 60) # floor() rounds down to the last full hour
minute <- a %% 60 * 0.01 # the %% operator gives you the remainder in base 60
new_time <- hour + minute

1.15

a我创建了一个函数,虽然不是最好的方法,但它仍然有效

number.to.time <- function(x){  
hours <- as.numeric(x)/60  
clean.hours <- floor(hours)  
minutes.60 <- clean.hours*60  
get.extra.minutes <- as.numeric(x) - minutes.60  
result <- paste(clean.hours, get.extra.minutes, sep=".")  
return(result)  
}

所以你想把分钟转换成小时,是吗?
as.numeric(x)/60
有什么问题?@AndreElrico我假设这是一个打字错误。要使它成为一个真正的解决方案:
x=c('834','1534','75','180');转换为M2H 1。x的输入类型为字符串(OP),2<代码>200->3.20
,而不是
3.40
,3。在函数中使用
return()
not
print()
。嗨,JM_44,这个函数非常有用谢谢@AndreElricoHi Maurits,我要找的是将数值75(以分钟为单位)转换为小时的时间,75分钟是1小时15分钟,因此我需要1.15分钟而不是1.25分钟的输出,@jbobres建议的方法完成了此任务。。thanks@Vikram这是一个非常非传统的分数小时定义。通常,分数表示十进制分数,而不是十六进制分数。如果你想表示1小时15分钟,你可以把它写成
1h15m
,而不是
1.15
>number.to.time(75)
[1] "1.15"

>number.to.time(1112)
 [1] "18.32"

 x = c(75, 190, 200, 1155)

> number.to.time(x)
[1] "1.15"  "3.10"  "3.40"  "19.15"