time.limit1 <- 8 * 60
time.limit2 <- 0.15*1
time.limit3 <- 1 * 60
list.variables <- c("fvar1", "fvar2","fvar3", "svar1", "svar2", "svar3")
naper.variables <- c("class2","call.type","priority",
"dispatch.delay", "travel.time", "response.time")
rt.summary <- function(city.data, list.variables) {
city.small <- city.data %>% select(one_of(list.variables))
city.summary <- city.small %>%
filter(call.type==2,
!is.na(response.time),
response.time <= time.limit1,
response.time >= time.limit2) %>%
mutate(dispatch.delay2 = pmin(dispatch.delay, time.limit3),
travel.time2 = pmin(travel.time, time.limit3),
response.time2 = pmin(response.time, time.limit3)) %>%
group_by(class2) %>%
summarise(count = n(),
DDM_Avg = mean(dispatch.delay2),
TTM_Avg = mean(travel.time2),
RTM_Avg = mean(response.time2),
DDM_P90 = quantile(dispatch.delay, 0.9),
TTM_P90 = quantile(travel.time, 0.9),
RTM_P90 = quantile(response.time, 0.9))
return(list(city.small, city.summary))
}
rt.summary
这个程序是ok的, 但是我想更flexible, 把function里面 col names 都换成 list.variables 的名字
像这样
time.limit1 <- 8 * 60
time.limit2 <- 0.15*1
time.limit3 <- 1 * 60
list.variables <- c("fvar1", "fvar2","fvar3", "svar1", "svar2", "svar3")
naper.variables <- c("class2","call.type","priority",
"dispatch.delay", "travel.time", "response.time")
rt.summary <- function(city.data, list.variables) {
args <- as.list(match.call())
city.small <- city.data %>% select(one_of(list.variables))
city.summary <- city.small %>%
filter(fvar2==2,
!is.na(svar3),
svar3 <= time.limit1,
svar3>= time.limit2) %>%
mutate(svar12 = pmin(svar1, time.limit3),
svar22 = pmin(svar2, time.limit3),
svar32 = pmin(svar3, time.limit3)) %>%
group_by(fvar1) %>%
summarise(count = n(),
DDM_Avg = mean(svar12),
TTM_Avg = mean(svar22),
RTM_Avg = mean(svar32),
DDM_P90 = quantile(svar1, 0.9),
TTM_P90 = quantile(svar2, 0.9),
RTM_P90 = quantile(svar3, 0.9))
return(list(city.small, city.summary))
}


雷达卡



京公网安备 11010802022788号







