У меня есть набор данных, df,
Subject Folder Message Date
A Out 9/9/2019 5:46:38 PM
A Out 9/9/2019 5:46:40 PM
A Out 9/9/2019 5:46:42 PM
A Out 9/9/2019 5:46:43 PM
A Out 9/9/2019 9:30:00 PM
A Out 9/9/2019 9:30:01 PM
B Out 9/9/2019 9:35:00 PM
B Out 9/9/2019 9:35:01 PM
Я пытаюсь сгруппировать это по теме, найти продолжительность и создать новый столбец Продолжительность. Я также sh создаю порог, если время Дата превышает определенное количество времени. Моя дилемма в том, что в группе А время идет с 5:46 в 4-м ряду до 9:30 в 5-м ряду. Это дает неточную продолжительность в Группе А. Я '1013 *' смогу "разбить" это время и найти новую продолжительность, создавая новое значение (А1) в Предмете, когда время превышает 10 минут. Я не уверен, должен ли я использовать al oop для этого?
Subject Duration Group
A 5 sec outdata1
A1 1 sec outdata2
B 1 sec outdata3
Вот мой dput:
structure(list(Subject = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L), .Label = c("A", "B"), class = "factor"), Folder = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Out", class = "factor"),
Message = c("", "", "", "", "", "", "", ""), Date = structure(1:8, .Label = c("9/9/2019 5:46:38 PM",
"9/9/2019 5:46:40 PM", "9/9/2019 5:46:42 PM", "9/9/2019 5:46:43 PM",
"9/9/2019 9:30:00 PM", "9/9/2019 9:30:01 PM", "9/9/2019 9:35:00 PM",
"9/9/2019 9:35:01 PM"), class = "factor")), row.names = c(NA,
-8L), class = "data.frame")
Это то, что я пробовал:
thresh <- duration(10, units = "minutes")
df %>%
mutate(Date = mdy_hms(Date)) %>%
transmute(Subject, Duration = diff = difftime(as.POSIXct(Date, format =
"%m/%d/%Y %I:%M:%S %p"),as.POSIXct(Date,
format = "%m/%d/%Y %I:%M:%S %p" ), units = "secs")) %>%
ungroup %>%
distinct %>%
mutate(grp = str_c("Outdata", row_number()))
mutate(delta = if_else(grp < thresh1, grp, NA_real_))