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

时间:2015-09-28 17:53:54

标签: r

我有一些HHMM格式的文​​本时间字段,我需要将文本时间之间的DIFFERNCET转换为十进制值。下面是2个文本时间列“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但是当我减去40得到

时,对于“645”不起作用

1 个答案:

答案 0 :(得分:2)

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

" DIFF"给出你所拥有的"差异。在文字时间"柱。除以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