【问题标题】:Subtracting one time column from another r从另一个 r 中减去一个时间列
【发布时间】:2019-09-16 20:05:10
【问题描述】:

我正在尝试计算两列之间的时间差异

Time_1       Time_2
17:16:40     17:17:52
12:42:07     12:42:54
12:14:43     12:21:37
12:10:42     12:13:53
12:03:39     12:05:18

typeof(Time_1)
[1] "double"

typeof(Time_2)
[1] "double"

DF <- data.frame(Time_1, Time_2)
str(DF)

'data.frame':   5 obs. of  2 variables:
 $ DF.Time_1: 'times' num  NA 17:16:40 12:42:07 12:14:43 12:10:42 ...
  ..- attr(*, "format")= chr "h:m:s"
 $ DF.Time_2: 'times' num  NA 17:17:52 12:42:54 12:21:37 12:13:53 ...
  ..- attr(*, "format")= chr "h:m:s"

但是,当我尝试进行以下减法时

DF$Diff <- (DF$Time_2 - Tbl$Time_1)

我在 Diff 列中得到非常小的小数。

Time_1       Time_2      Diff
17:16:40     17:17:52    8.333333e-04
12:42:07     12:42:54    5.439815e-04
12:14:43     12:21:37    4.791667e-03
12:10:42     12:13:53    2.210648e-03
12:03:39     12:05:18    1.388889e-03

谁能告诉我如何让 Diff 列以 HH:MM:SS 格式显示?

谢谢

【问题讨论】:

  • 如果指定使用的包就好了
  • 您的计算是正确的,它们只是以天为单位 - 72/(24*60*60) = 0.0008333 天。正如 akrun 建议的那样,如果您可以使用 dput(DF) 以便我们知道数据的结构,那么将其转换为 H:M:S 可能会相当简单。

标签: r time types difference


【解决方案1】:

我们可以从chron转换成times,然后取差

library(dplyr)
library(chron)
DF %>% 
     mutate_all(times) %>% 
     mutate(Diff = Time_2 - Time_1)
#   Time_1   Time_2     Diff
#1 17:16:40 17:17:52 00:01:12
#2 12:42:07 12:42:54 00:00:47
#3 12:14:43 12:21:37 00:06:54
#4 12:10:42 12:13:53 00:03:11
#5 12:03:39 12:05:18 00:01:39

数据

DF <- structure(list(Time_1 = c("17:16:40", "12:42:07", "12:14:43", 
"12:10:42", "12:03:39"), Time_2 = c("17:17:52", "12:42:54", "12:21:37", 
"12:13:53", "12:05:18")), class = "data.frame", row.names = c(NA, 
-5L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多