Если я вас правильно понял, вам нужно что-то вроде
library(dplyr)
df %>%
mutate(V1 = as.Date(V1),
month = format(V1, "%B")) %>%
group_by(Location.p1, month, group = data.table::rleid(Location.p1)) %>%
summarise(diff = as.integer(diff(range(V1)) + 1)) %>%
summarise(mean = mean(diff))
# Location.p1 month mean
# <fct> <chr> <dbl>
#1 Loc.1 January 1.5
#2 Loc.2 January 3
#3 Loc.3 January 2
data
df <- structure(list(V1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L,
2L, 3L, 4L, 5L, 6L, 7L), .Label = c("2019-01-01", "2019-01-02",
"2019-01-03", "2019-01-04", "2019-01-05", "2019-01-06", "2019-01-07"
), class = "factor"), Character.p1 = structure(c(2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Ellen",
"Paul"), class = "factor"), Location.p1 = structure(c(1L, 1L,
2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 3L, 3L, 2L, 2L), .Label = c("Loc.1",
"Loc.2", "Loc.3"), class = "factor")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"))