全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1106 2
2016-04-11
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))
}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-4-11 10:49:14
完全看不懂,但是支持一下。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-19 00:27:24
fvar1=list.variables[1],fvar2=list.varables[2],不就可以了嘛
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群