R 将文本时间转换为十进制时间的算法

R 将文本时间转换为十进制时间的算法,r,R,我有一些HHMM格式的文本时间字段,我需要将文本时间之间的差值转换为十进制值。下面是两个文本时间列“TextStartTime”和“TextEndTime”,以及一个名为“文本时间差”的列,这两个列之间存在差异 TextStartTime Text end time Diff. in Text Time Decimal TIME in Hours 0930 1300 370

我有一些HHMM格式的文本时间字段,我需要将文本时间之间的差值转换为十进制值。下面是两个文本时间列“TextStartTime”和“TextEndTime”,以及一个名为“文本时间差”的列,这两个列之间存在差异

TextStartTime    Text end time      Diff. in Text Time     Decimal TIME in Hours
    0930             1300                  370                               3.5 

    1015             1700                  685                                6.45  

    930              1600                  670                                6.5   

    0945             1725                  780                                 7.66 

    0930             1540                  610                                  6.16

    1000             1645                   645                                 6.75
我知道这不是R问题,但我可以使用什么算法将“文本时间差”字段转换为“十进制小时时间”字段


我首先说,如果“文本时间差”列的分钟数大于30,那么从分钟数中减去40,那么“670”将是“630”,然后我可以将630转换为6.5,但这对“645”不起作用,当我减去40时,我得到了

我假设你的时间是数字(尽管情况可能并非如此,因为您有前导零。如果它们是字符串,请先使用as.numeric()

“diff”给出了“diff.in Text Time”(文本时间差异)列中的内容。除以100得到小时数。未调整的分钟数是减去小时后剩下的时间。对于大于60的分钟,减去40。然后得到小时的分数。为十进制时间加上小时和分钟

TextStartTime <- c(930, 1015, 930, 0945, 0930, 1000)
Textendtime <- c(1300, 1700, 1600, 1725, 1540, 1645)

diff <- Textendtime-TextStartTime
hours <- floor(diff/100)
mins <- (diff/100-floor(diff/100))*100
mins[mins>60] <- mins[mins>60]-40
mins <- mins*1/60
time <- hours+mins

TextStartTime只是澄清一下:您不想使用hhmm时间来获取十进制小时数(因为如果是,请参见lubridate软件包)?您想直接使用差值?我想知道第二行是否应该是6.75