У меня есть следующие данные в виде списка раз POSIXct за один месяц. Каждый из них представляет собой доставку велосипеда. Моя цель - найти среднее количество доставок велосипедов за десятиминутный интервал за 24-часовой период (всего 144 ряда). Сначала необходимо суммировать все поездки и объединить их в интервал, а затем разделить на количество дней. Пока мне удалось написать код, который суммирует поездки за 10-минутный интервал, но дает неверные значения. Я не уверен, где что-то пошло не так.
Данные выглядят так:
head(start_times) [1] "2014-10-21 16:58:13 EST" "2014-10-07 10:14:22 EST" "2014-10-20 01:45:11 EST" [4] "2014-10-17 08:16:17 EST" "2014-10-07 17:46:36 EST" "2014-10-28 17:32:34 EST" length(start_times) [1] 1747
Код выглядит так:
library(lubridate)
library(dplyr)
tripduration <- floor(runif(1747) * 1000)
time_bucket <- start_times - minutes(minute(start_times) %% 10) - seconds(second(start_times))
df <- data.frame(tripduration, start_times, time_bucket)
summarized <- df %>%
group_by(time_bucket) %>%
summarize(trip_count = n())
summarized <- as.data.frame(summarized)
out_buckets <- data.frame(out_buckets = seq(as.POSIXlt("2014-10-01 00:00:00"), as.POSIXct("2014-10-31 23:0:00"), by = 600))
out <- left_join(out_buckets, summarized, by = c("out_buckets" = "time_bucket"))
out$trip_count[is.na(out$trip_count)] <- 0
head (out) out_buckets trip_count 1 2014-10-01 00:00:00 0 2 2014-10-01 00:10:00 0 3 2014-10-01 00:20:00 0 4 2014-10-01 00: 30:00 0 5 2014-10-01 00:40:00 0 6 2014-10-01 00:50:00 0 dim (out) [1] 4459 2
test <- format(out$out_buckets,"%H:%M:%S") test2 <- out$trip_count test <- cbind(test, test2) colnames(test)[1] <- "interval" colnames(test)[2] <- "count" test <- as.data.frame(test) test$count <- as.numeric(test$count) test <- aggregate(count~interval, test, sum)
head(test, n = 20) interval count 1 00:00:00 32 2 00:10:00 33 3 00:20:00 32 4 00:30:00 31 5 00:40:00 34 6 00:50:00 34 7 01:00:00 31 8 01:10:00 33 9 01:20:00 39 10 01:30:00 41 11 01:40:00 36 12 01:50:00 31 13 02:00:00 33 14 02:10:00 34 15 02:20:00 32 16 02:30:00 32 17 02:40:00 36 18 02:50:00 32 19 03:00:00 34 20 03:10:00 39но это невозможно, потому что когда я подсчитываю
sum(test$count) [1] 7494
Я получаю 7494, тогда как число должно быть 1747
Я не уверен, где я ошибся и как упростить этот код, чтобы получить тот же результат.