Это будет один из способов обработки вашего дела. Ваши данные называются здесь mydf
. Во-первых, вы можете создать объект даты с использованием paste()
и as.POSIXct()
. Поскольку вы хотите добавить 2 часа 30 минут, я добавил 60 (сек) * 150 (мин) к объекту даты и создал foo
. Затем я извлек час-минута-вторую часть из foo
и создал новый столбец под названием Time2
. Последнее задание - создать групповую переменную с cut()
. Я не знаю, как вы хотите маркировать группы, поэтому я назвал их как группу 1, группу 2 и так далее.
library(dplyr)
mydf %>%
mutate(foo = as.POSIXct(paste(Date, Time, sep = " "),
format("%m/%d/%Y %H:%M:%S"), tz = "UTC") +
(60 * 150),
Time2 = format(foo, "%H:%M:%S"),
group = cut(as.numeric(format(foo, "%H")), breaks = seq(0, 24, 3),
labels = paste("group", 1:8, sep = " "),
include.lowest = TRUE)) %>%
select(-foo)
# Time Date Device Time2 group
#1 7:12:20 12/14/2016 Tablet 09:42:20 group 3
#2 8:57:34 12/12/2016 Desktop 11:27:34 group 4
#3 18:48:36 12/1/2016 Desktop 21:18:36 group 7
#4 4:27:34 12/16/2016 Desktop 06:57:34 group 2
#5 5:57:48 12/28/2016 Desktop 08:27:48 group 3
#6 10:28:31 12/20/2016 Desktop 12:58:31 group 4
#7 10:28:32 12/20/2016 Desktop 12:58:32 group 4
DATA
mydf <- structure(list(Time = c("7:12:20", "8:57:34", "18:48:36", "4:27:34",
"5:57:48", "10:28:31", "10:28:32"), Date = c("12/14/2016", "12/12/2016",
"12/1/2016", "12/16/2016", "12/28/2016", "12/20/2016", "12/20/2016"
), Device = c("Tablet", "Desktop", "Desktop", "Desktop", "Desktop",
"Desktop", "Desktop")), .Names = c("Time", "Date", "Device"), class = "data.frame", row.names = c(NA,
-7L))
Благодаря @azzurro –
это дает мне ответ в формате "12H 42m 20S", мне нужно в "чч: мм: сс" –
Что-то вроде этого, возможно, 'библиотеки (данные. Таблица) ; as.ITime (df $ Time) + as.ITime ("5:30") ' –