In [ ]:
DATA="../../cocUptoJuly2016.csv"
library(dplyr)
library(lubridate)
library(xts)

In [ ]:
raw <- read.csv(DATA, stringsAsFactors = F)
head(raw)
raw$Complaint.Date <- as.POSIXct(raw$Complaint.Date, format = "%m/%d/%Y %H:%M:%S")

In [ ]:
raw <- select(raw, Ward, Complaint.Type, Complaint.Date)

In [ ]:
complaints.data <- raw[raw$Complaint.Date >= strptime("01/01/2012 00:00:00", format = "%m/%d/%Y %H:%M:%S"), ] 
complaints.data$NumComplaints <- 1

In [ ]:
min.date <- min(complaints.data$Complaint.Date)
max.date <- max(complaints.data$Complaint.Date)

In [ ]:
periodicity_ <- function(complaints.frame, periodicity) {
    stopifnot(nrow(complaints.frame) > 0)
    series <- xts(complaints.frame$NumComplaints, complaints.frame$Complaint.Date)
    if(periodicity == "hour") {
        series <- period.apply(series, endpoints(series, "hours"), FUN = sum)
    } else if (periodicity == "day") {
        series <- apply.daily(series, FUN = sum)
    }
    series
}

In [ ]:
# construct city level data
city.level.data <- function(periodicity) {
    periodicity_(complaints.data, periodicity)
}
plot(city.level.data("hour"))

In [ ]:
plot(city.level.data("day"))

In [ ]:
# ward level data
ward.level.data <- function(ward, periodicity) {
    df <- filter(complaints.data, Ward == ward)
    periodicity_(df, periodicity)
}
plot(ward.level.data("N188", "hour"))

In [ ]:
plot(ward.level.data("N188", "day"))

In [ ]:
# complaint level of data
complaint.level.data <- function(complaint.type, periodicity) {
    df <- filter(complaints.data, Complaint.Type == complaint.type)
    periodicity_(df, periodicity)
}
plot(complaint.level.data("Mosquito menace ", "hour"))

In [ ]:
plot(complaint.level.data("Mosquito menace ", "day"))

In [ ]:
# the above functions are stored in lib/alerts_data.R