所以目前我可以使用以下代码计算一个站点的每日最大值:
library('dplyr')
library('data.table')
library('tidyverse')
library('tidyr')
library('lubridate')
funcVolume <- function(max_data$enter_yard, max_data$exit_yard)
{
vecOnes <- array(1,c(length(max_data$enter_yard),1))
vecTime <- c(max_data$enter_yard,max_data$exit_yard)
vecCount <- c(vecOnes,-vecOnes)
df_test <- data.frame(T = vecTime, Count = vecCount)
df_test <- df_test %>%
arrange(T) %>%
mutate(Volume = cumsum(Count))
df_test
}
df_test2 <- df_test
df_test2$date <- as.Date(format(df_test$T, "%Y-%m-%d"))
df_test3 <- df_test2
df_test3 <- tibble(x = df_test2$Volume, y = df_test2$date) %>%
arrange(y)
dataset <- df_test3 %>%
group_by(y) %>%
dplyr::filter(x == max(x)) %>%
distinct(x,.keep_all = T) %>%
ungroup()
但是,我想在多个地方这样做。在我的原始数据框中,我有一列列出了站点的名称,以及两列用于对象进入或离开站点的时间。该名称只是一个通用文本列,另外两列是datetime列。理想情况下,我希望输出如下所示:
Date | Max Count | Site
x y z
x a b
我还有几百万行数据,所以我需要能够在合理的时间范围内运行的东西。