# data.table way this stuff feels faster than dplyr but isn't very FP when using := methods # alternatively, use the .() aka list() feature and create a new table. Still faster than dplyr or plyr # https://mran.microsoft.com/web/packages/data.table/vignettes/datatable-intro.html library(data.table) # for fread and other data.table functions library(tidyverse) # for as_tibble to feed into ggplot library(lubridate) # for round_date library(fasttime) # for fastPOSIXct dtER=fread("c:/kewoo/eai/EXCEPTIONREC.d20171206.csv") AESTDiff <- 36000 interval.length <- "1 seconds" # exploratory str(dtER) nrow(dtER) names(dtER) dtER[,.(TIME_STAMP, APPLICATIONID)] # end exploration dtER[,T1S := round_date(fastPOSIXct(TIME_STAMP)-AESTDiff, interval.length)] dtER[,.(TIME_STAMP, T1S, APPLICATIONID)] tb01.all <- dtER[, .(.N), by=.(T1S)] %>% as_tibble() tb01.AC <- dtER[APPLICATIONID == "AcurityConnector", .(.N), by=.(T1S)] %>% as_tibble() tb01.identity <- dtER[APPLICATIONID == "Identity", .(.N), by=.(T1S)] %>% as_tibble() tb01.all ggplot() + geom_jitter(data=tb01.all, aes(x=T1S,y=N), color='blue') + geom_jitter(data=tb01.identity, aes(x=T1S,y=N), color='red') tb02.all <- dtER[, .(.N), by=.(T1S, APPLICATIONID)] # %>% as_tibble() ggplot(tb02.all, aes(T1S, fill = APPLICATIONID)) + geom_histogram(binwidth = 1440) + scale_fill_brewer(palette="Set1") ggplot(tb02.all, aes(T1S, colour = APPLICATIONID)) + geom_freqpoly(binwidth = 1440)