Вычитать часы без даты - PullRequest
       0

Вычитать часы без даты

0 голосов
/ 02 апреля 2020

У меня есть два столбца, которые содержат время начала и время окончания. Теперь мне нужно знать, в чем разница, и поставить новую колонку.

Все ресурсы и вопросы, которые я прочитал, имеют дату типа 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

Ответы [ 2 ]

1 голос
/ 02 апреля 2020
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)


df$Time.start = strptime(df$Time.start, format = "%H:%M:%S", tz = "UTC")
df$Time.end = strptime(df$Time.end, format = "%H:%M:%S", tz = "UTC")
df$Diff = df$Time.end - df$Time.start
df

Или, если вы предпочитаете более компактное 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
> 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
0 голосов
/ 02 апреля 2020

Вы можете использовать difftime и указать единицы измерения:

df$new_column <- difftime(Time.start, Time.end, units = "hours")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...