Add example alternativesOverTime.R

Change-Id: I2e64f1adfa84463e3738551c5cc908cb80de2edd
diff --git a/examples/simple/alternativesOverTime.R b/examples/simple/alternativesOverTime.R
new file mode 100755
index 0000000..7866121
--- /dev/null
+++ b/examples/simple/alternativesOverTime.R
@@ -0,0 +1,46 @@
+#!/usr/bin/env Rscript
+#
+# Plot frequency of alternative expressions or spellings variants over time
+#
+library(RKorAPClient)
+library(ggplot2)
+library(reshape2)
+library(plotly)
+library(htmlwidgets)
+
+alternativesOverTime <- function(alternatives, years, kco = new("KorAPConnection", verbose=TRUE)) {
+  df = data.frame(year=years)
+  vc = "textType = /Zeit.*/ & pubDate in"
+  urls <- data.frame()
+  for (v in alternatives) {
+    df[v] <- sapply(df$year, function(y) {
+        kqo <- corpusQuery(kco, query=v, vc=paste(vc, y))
+        urls <<- rbind(urls, data.frame(Variant=v, year=y, url=kqo@webUIRequestUrl))
+        kqo@totalResults
+    })
+  }
+  df$total <- apply(df[,alternatives], 1, sum)
+  df <- merge(melt(df, measure.vars = alternatives, value.name = "afreq", variable.name = "Variant"),
+              urls, by=c("Variant", "year"))
+  df$ci <- t(sapply(Map(prop.test, df$afreq, df$total), "[[","conf.int"))
+  df$share <- df$afreq / df$total
+  g <- ggplot(data = df, mapping = aes(x = year, y = share, color=Variant, fill=Variant)) +
+    geom_ribbon(aes(ymin=ci[, 1], ymax=ci[, 2], color=Variant, fill=Variant), alpha=.3, linetype=0) +
+    geom_line() +
+    geom_point() +
+    ggtitle(paste0(alternatives, collapse = " vs. ")) +
+    xlab("TIME") +
+    ylab(sprintf("Observed frequency ratio")) +
+    theme(axis.text.x = element_text(angle = 45, hjust = 1)) + scale_x_continuous(breaks=unique(df$year))
+  pp <- ggplotly(g, tooltip = c("x", "y"))
+  for (i in 1:length(alternatives)) {
+    vdata <- df[df$Variant==alternatives[i],]
+    pp$x$data[[2+i]]$customdata <- vdata$url
+    pp$x$data[[2+i]]$text <- sprintf("%s<br />absolute: %d / %d", pp$x$data[[2+i]]$text, vdata$afreq, vdata$total)
+  }
+  ppp <- onRender(pp, "function(el, x) { el.on('plotly_click', function(d) { var url=d.points[0].customdata; window.open(url, 'korap') })}")
+  print(ppp)
+  df
+}
+
+df <- alternativesOverTime(c('so "genannte.?"', '"sogenannte.?"'), (1995:2018))