【问题标题】:Algorithm to convert Text time to Decimal Time将文本时间转换为十进制时间的算法
【发布时间】:2015-09-28 17:53:53
【问题描述】:

我有一些 HHMM 格式的文本时间字段,我需要将文本时间之间的 DIFFERNCET 转换为十进制值。下面是 2 个文本时间列“TextStartTime”和“TextEndTime”以及一个名为“Difference in Text Time”的列,即

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”不起作用

【问题讨论】:

  • 只是为了澄清:您不想使用 hhmm 时间来获得小数小时(因为如果是这样,请参阅 lubridate 包)?你想直接使用差异吗?
  • 不知第二行应该是6.75

标签: r


【解决方案1】:

我假设您的时间是数字的(尽管可能不是这种情况,因为您有前导零。如果它们是字符串,请先使用 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

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2021-07-22
    • 2011-07-09
    • 2014-03-13
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多