Мы можем преобразовать в "factor"
и обратно в "numeric"
.
library(dplyr)
sample %>%
group_by(cutt=cut(as.numeric(factor(date)), breaks=breaks)) %>%
summarise(m1=mean(X1), m2=mean(X2))
# # A tibble: 4 x 3
# cutt m1 m2
# <fct> <dbl> <dbl>
# 1 (0,7] 126. 120.
# 2 (7,15] 123. 90.3
# 3 (15,30] 82.6 107.
# 4 (30,50] 90.4 104.
Или в базу R:
do.call(rbind, by(sample[2:3], cut(as.numeric(factor(sample$date)), breaks), colMeans))
# X1 X2
# (0,7] 125.79941 120.01652
# (7,15] 122.82247 90.33681
# (15,30] 82.64698 107.13250
# (30,50] 90.39701 104.09779
Данные
set.seed(42)
n <- 50
sample <- data.frame(date=seq(as.Date("2019/1/1"), by="day", length.out=n),
matrix(rnorm(4*n, 100, 50), ncol=4,
dimnames=list(NULL, paste0("X", 1:4))))
breaks <- c(0, 7, 15, 30, 50)