Как уже упоминалось, было бы полезно, если бы вы могли предоставить свои данные через dput()
вместо использования изображения.
Чтобы помочь вам начать работу, вы можете использовать tidyverse
и group_by
каждый день, а также Type
:
library(tidyverse)
df %>%
group_by(Date = as.Date(DateTime), Type) %>%
mutate(DwellTime = difftime(last(DateTime), first(DateTime), units = "mins"))
Выход
# A tibble: 14 x 4
# Groups: Date, Type [7]
DateTime Type Date DwellTime
<dttm> <fct> <date> <drtn>
1 2020-01-01 12:00:00 abc 2020-01-01 120 mins
2 2020-01-01 12:30:00 abc 2020-01-01 120 mins
3 2020-01-01 12:31:00 xyz 2020-01-01 59 mins
4 2020-01-01 13:30:00 xyz 2020-01-01 59 mins
5 2020-01-01 14:00:00 abc 2020-01-01 120 mins
6 2020-01-02 10:20:00 abc 2020-01-02 56 mins
7 2020-01-02 11:15:00 xyz 2020-01-02 285 mins
8 2020-01-02 11:16:00 abc 2020-01-02 56 mins
9 2020-01-02 13:15:00 efg 2020-01-02 0 mins
10 2020-01-02 16:00:00 xyz 2020-01-02 285 mins
11 2020-01-03 13:30:00 abc 2020-01-03 30 mins
12 2020-01-03 14:00:00 abc 2020-01-03 30 mins
13 2020-01-03 15:00:00 xyz 2020-01-03 15 mins
14 2020-01-03 15:15:00 xyz 2020-01-03 15 mins
Данные
df <- data.frame(
DateTime = as.POSIXct(
c("1/1/2020 12:00", "1/1/2020 12:30", "1/1/2020 12:31", "1/1/2020 13:30",
"1/1/2020 14:00", "2/1/2020 10:20", "2/1/2020 11:15", "2/1/2020 11:16",
"2/1/2020 13:15", "2/1/2020 16:00", "3/1/2020 13:30", "3/1/2020 14:00",
"3/1/2020 15:00", "3/1/2020 15:15"), format = "%d/%m/%Y %H:%M"),
Type = c("abc", "abc", "xyz", "xyz",
"abc", "abc", "xyz", "abc",
"efg", "xyz", "abc", "abc",
"xyz", "xyz")
)