我最近申请了一份工作,并且收到了我需要在一周内完成的小测验。我骄傲自大,大约一个半小时就完成了。不幸的是,看来我没有成功,我想看看你们中是否有人想花点时间看我的错误。基本上,我的目标是弄清楚我哪里出了错,只是因为我在提交后很快就被拒绝了,如果我被问到类似的问题,我真的想确保我准备好下一次。
我主要关心的是我的答案是否正确。但是我怀疑他们可能也希望看到更好的代码组织。我并不真正认为这是必要的,但也许我应该使它看起来更专业。这是我的第一个此类应用程序。
我用R语言完成了工作,但是除了Excel,您可以使用任何语言来求解。
问题:
最繁忙的街道是什么?
最繁忙的月份是什么?
您是否可以从该数据中找到最繁忙的方向(N,S,E,W)?
这些是主要问题。还有其他一些,但这是仅有的明确答案。其他问题是关于我追求什么数据清理或功能工程以及我从数据中另外发现了什么。
我的回答是:
西大街
十月
以南为界,以北为界。
对于任何有兴趣的人,我也在下面提供了我的代码,以便您可以查看我可能出了问题的地方。
data = read.csv("D:\\School\\Work\\Allstate Test\\Average_Daily_Traffic_Counts.csv")
attach(data)
#detach(data)
# 1. Data Cleaning --------------------------------------------------------
# Mispellings, St/Street, etc.
# Eliminate case problem
data = as.data.frame(sapply(data, toupper))
data = as.matrix(data)
# Fix st/street problem, Wacker lower
for(i in 1:length(data[,1]))
{
if(grepl("71ST STREET",data[i,3],ignore.case=TRUE)==TRUE)
{
data[i,3] = '71ST ST'
}
}
for(i in 1:length(data[,1]))
{
if(grepl("WACKER DR (LOWER)",data[i,3],ignore.case=TRUE)==TRUE)
{
data[i,3] = 'Wacker Lower Dr'
}
}
data
# I don't see other problems.
# 2. Busiest Street -------------------------------------------------------
max(aggregate(Total.Passing.Vehicle.Volume,by=list(Category=Street),FUN=sum)[,2])
which(aggregate(Total.Passing.Vehicle.Volume,by=list(Category=Street),FUN=sum)[,2] == 1112200)
aggregate(Total.Passing.Vehicle.Volume,by=list(Category=Street),FUN=sum)[244,1] # Western Ave
# 3. Busiest Month --------------------------------------------------------
library(dplyr)
data$Date.of.Count = as.Date(data$Date.of.Count,format='%m/%d/%Y')
month = format(data$Date.of.Count,'%m')
data = cbind(data,month)
max(aggregate(Total.Passing.Vehicle.Volume,by=list(Category=month),FUN=sum)[,2])
aggregate(Total.Passing.Vehicle.Volume,by=list(Category=month),FUN=sum)[,2] #October
# 4. Busiest Direction of Travel ------------------------------------------
library(stringr)
NORTH = sum(as.numeric(str_extract(data[,6], "(?i)(?<=NORTH BOUND:\\D)\\d+")),na.rm=TRUE)
EAST = sum(as.numeric(str_extract(data[,6], "(?i)(?<=EAST BOUND:\\D)\\d+")),na.rm=TRUE)
WEST = sum(as.numeric(str_extract(data[,6], "(?i)(?<=WEST BOUND:\\D)\\d+")),na.rm=TRUE)
SOUTH = sum(as.numeric(str_extract(data[,6], "(?i)(?<=SOUTH BOUND:\\D)\\d+")),na.rm=TRUE)
max(c(NORTH,EAST,WEST,SOUTH))