Skip to content

Instantly share code, notes, and snippets.

@mprymek
Created March 18, 2015 21:48
Show Gist options
  • Save mprymek/61b49bb6c7a37218971e to your computer and use it in GitHub Desktop.
Save mprymek/61b49bb6c7a37218971e to your computer and use it in GitHub Desktop.
library(xts)
df = read.csv("Ceny_anonym.csv",sep = ";")
colnames(df) = c('phone','pmax','pmin','pmid','datetime')
df$datetime = as.POSIXct(df$datetime,format="%d.%m.%Y %H:%M")
df$dtl = as.POSIXlt(df$datetime)
df$mno = ((df$dtl$year+1900-2008)*12)+df$dtl$mon
my_norm2 = function(df,name,start) {
idxs = which(df$phone==name)
df2 = df[idxs,]
xdf = xts(df2$pmid, order.by=df2$datetime)
colnames(xdf) = name
diff = index(xdf)[[1]] - start
index(xdf) = index(xdf) - diff
base = max(xdf) / 100
xdf / base
}
start = min(df$datetime)
names = unique(df$phone)
xdfs = Map(function(x){my_norm2(df,x,start)},names)
xdf = do.call(merge,xdfs)
mean_fun = function(x) apply(x, 2, function(x) mean(x,na.rm=TRUE))
xdfm = period.apply(xdf, endpoints(xdf, "months"), FUN=mean_fun)
plot.xts(xdfm, screens=1)
plot(time(xdfm),xdfm$Telefon.Ilona,type="l",col="blue",ylim=c(0,100))
lines(time(xdfm),xdfm$Telefon.Ilja,col="red")
lines(time(xdfm),xdfm$Telefon.Michal,col="green")
lines(time(xdfm),xdfm$Telefon.Kvido,col="yellow")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment