R 减去没有日期的小时数
我有两列,包含开始时间和结束时间。现在,我需要知道区别是什么,并把它放在一个新的专栏里 我读过的所有参考资料和问题都有一个日期,比如2019/11/11,但是您可以使用R 减去没有日期的小时数,r,R,我有两列,包含开始时间和结束时间。现在,我需要知道区别是什么,并把它放在一个新的专栏里 我读过的所有参考资料和问题都有一个日期,比如2019/11/11,但是您可以使用difftime()函数 然而,我没有约会。我只有两次。 示例数据: Activity Time.start Time.end a 08:45:00 11:45:00 b 09:30:00 10:30:00 我想在一个新的专栏中指出这一点: Activity Time.start Time.
difftime()
函数
然而,我没有约会。我只有两次。
示例数据:
Activity Time.start Time.end
a 08:45:00 11:45:00
b 09:30:00 10:30:00
我想在一个新的专栏中指出这一点:
Activity Time.start Time.end Diff
a 08:45:00 11:45:00 3
b 09:30:00 10:30:00 1
您可以使用
difftime
并指定单位:
df$new_column <- difftime(Time.start, Time.end, units = "hours")
df$new\u列
或者如果您喜欢更紧凑的dplyr
解决方案
df = data.frame(Activity = c("a", "b"), Time.start = c("08:45:00", "09:30:00"),
Time.end = c("11:45:00", "10:30:00"), stringsAsFactors = FALSE)
library(dplyr)
df = df %>%
mutate(Time.start = as.POSIXct(Time.start, format = "%H:%M:%S")) %>%
mutate(Time.end = as.POSIXct(Time.end, format = "%H:%M:%S")) %>%
mutate(Diff = Time.end - Time.start)
df
转换为as.POSIXct
,即(as.POSIXct(df$Time.start,格式=“%H:%M:%S”)
)并使用difftime
。您是否只需要小时差,并将其舍入?在第一个示例中,您有b
的时间。从09:15:00开始
,然后是09:30:00@Matt那是我的错。它不必四舍五入。我想我复制了活动C,因为它在9:30开始,这不起作用。我以前试过。我收到一条错误消息,说“字符串不是标准的未提交格式”,请尝试这样设置您的时间:time1使用您的解决方案,它可以工作,但我得到的是分钟而不是小时。所以在上一个变种中,我使用了difftime和units=“hours”选项
df = data.frame(Activity = c("a", "b"), Time.start = c("08:45:00", "09:30:00"),
Time.end = c("11:45:00", "10:30:00"), stringsAsFactors = FALSE)
library(dplyr)
df = df %>%
mutate(Time.start = as.POSIXct(Time.start, format = "%H:%M:%S")) %>%
mutate(Time.end = as.POSIXct(Time.end, format = "%H:%M:%S")) %>%
mutate(Diff = Time.end - Time.start)
df
> df
Activity Time.start Time.end Diff
1 a 2020-04-03 08:45:00 2020-04-03 11:45:00 3 hours
2 b 2020-04-03 09:30:00 2020-04-03 10:30:00 1 hours