Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 减去没有日期的小时数_R - Fatal编程技术网

R 减去没有日期的小时数

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.

我有两列,包含开始时间和结束时间。现在,我需要知道区别是什么,并把它放在一个新的专栏里

我读过的所有参考资料和问题都有一个日期,比如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.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