【发布时间】:2016-01-19 04:09:26
【问题描述】:
我有以下数据作为跨越一个月的 POSIXct 时间列表。他们每个人都代表自行车交付。我的目标是找出 24 小时内每 10 分钟间隔的平均自行车交付量(总共产生 144 行)。首先,需要将所有行程相加并划分为一个区间,然后除以天数。到目前为止,我已经设法编写了一个代码,该代码对每 10 分钟间隔的行程求和,但它产生的值不正确。我不确定哪里出了问题。
数据如下:
头(开始时间) [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” 长度(开始时间) [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
头(出) 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 昏暗(出) [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)
头(测试,n = 20)
间隔计数
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
但这是不可能的,因为当我将计数相加时
总和(测试$计数) [1] 7494我得到 7494 而数字应该是 1747
我不确定我哪里出错了,以及如何简化此代码以获得相同的结果。
【问题讨论】:
-
请让您的示例可重现。
标签: r aggregate intervals summarization