diff --git a/DESCRIPTION b/DESCRIPTION
index 276c531..506ee08 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -12,6 +12,9 @@
 RoxygenNote: 6.1.1
 Imports:
     R.cache,
+    broom,
+    ggplot2,
+    tibble,
     magrittr,
     tidyr,
     dplyr,
@@ -27,4 +30,5 @@
     'KorAPCorpusStats.R'
     'RKorAPClient.R'
     'KorAPQuery.R'
+    'ci.R'
     'reexports.R'
diff --git a/NAMESPACE b/NAMESPACE
index 3074a48..3488a72 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -2,11 +2,15 @@
 
 S3method(format,KorAPQuery)
 export("%>%")
+export(as_tibble)
+export(bind_cols)
+export(ci)
 export(complete)
 export(group_by)
 export(mutate)
 export(select)
 export(summarise)
+export(tidy)
 export(year)
 exportClasses(KorAPConnection)
 exportClasses(KorAPCorpusStats)
@@ -27,6 +31,7 @@
 import(purrr)
 import(tidyr)
 import(utils)
+importFrom(broom,tidy)
 importFrom(dplyr,group_by)
 importFrom(dplyr,mutate)
 importFrom(dplyr,select)
@@ -34,4 +39,5 @@
 importFrom(jsonlite,fromJSON)
 importFrom(lubridate,year)
 importFrom(magrittr,"%>%")
+importFrom(stats,prop.test)
 importFrom(tidyr,complete)
diff --git a/R/ci.R b/R/ci.R
new file mode 100644
index 0000000..b9dd987
--- /dev/null
+++ b/R/ci.R
@@ -0,0 +1,50 @@
+
+#' Add confidence interval and relative frequency variables
+#'
+#' Using \code{\link{prop.test}}, \code{ci} adds three columns to a data frame:
+#' 1. relative frequency (\code{f}) 2. lower bound of a confidence interval
+#' (\code{ci.low}) 3. upper bound of a confidence interval
+#'
+#' @param df table with columns for absolute and total frequencies.
+#' @param x  column with the observed absolute frequency.
+#' @param N  column with the total frequncies
+#' @param conf.level confidence level of the returned confidence interval. Must
+#'   be a single number between 0 and 1.
+#'
+#' @export
+#' @importFrom stats prop.test
+#' @examples
+#' library(ggplot2)
+#' kco <- new("KorAPConnection", verbose=TRUE)
+#' expand_grid(year=2015:2018, alternatives=c("Hate Speech", "Hatespeech")) %>%
+#'   bind_cols(corpusQuery(kco, .$alternatives, sprintf("pubDate in %d", .$year))) %>%
+#'   mutate(tokens=corpusStats(kco, vc=vc)$tokens) %>%
+#'   ci() %>%
+#'   ggplot(aes(x=year, y=f, fill=query, color=query, ymin=conf.low, ymax=conf.high)) +
+#'     geom_point() + geom_line() + geom_ribbon(alpha=.3)
+#'
+ci <- function(df, x = totalResults, N = tokens, conf.level = 0.95) {
+  x <- enquo(x)
+  N <- enquo(N)
+  df %>%
+    rowwise %>%
+    mutate(tst = list(broom::tidy(prop.test(!!x, !!N, conf.level = conf.level)) %>%
+                        select("estimate", starts_with("conf.")) %>%
+                        rename(f = estimate)
+    )) %>%
+    tidyr::unnest(tst)
+}
+
+
+## quiets concerns of R CMD check re: the .'s that appear in pipelines
+if(getRversion() >= "2.15.1")  utils::globalVariables(c("."))
+
+
+# ci.old <- function(df, x = totalResults, N = tokens, conf.level = 0.95) {
+#   x <- deparse(substitute(x))
+#   N <- deparse(substitute(N))
+#   df <- data.frame(df)
+#   df$f <- df[,x] / df[,N]
+#   df[, c("conf.low", "conf.high")] <- t(sapply(Map(function(a, b) prop.test(a, b, conf.level = conf.level), df[,x], df[,N]), "[[","conf.int"))
+#   return(df)
+# }
diff --git a/man/ci.Rd b/man/ci.Rd
new file mode 100644
index 0000000..e4f7e54
--- /dev/null
+++ b/man/ci.Rd
@@ -0,0 +1,34 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/ci.R
+\name{ci}
+\alias{ci}
+\title{Add confidence interval and relative frequency variables}
+\usage{
+ci(df, x = totalResults, N = tokens, conf.level = 0.95)
+}
+\arguments{
+\item{df}{table with columns for absolute and total frequencies.}
+
+\item{x}{column with the observed absolute frequency.}
+
+\item{N}{column with the total frequncies}
+
+\item{conf.level}{confidence level of the returned confidence interval. Must
+be a single number between 0 and 1.}
+}
+\description{
+Using \code{\link{prop.test}}, \code{ci} adds three columns to a data frame:
+1. relative frequency (\code{f}) 2. lower bound of a confidence interval
+(\code{ci.low}) 3. upper bound of a confidence interval
+}
+\examples{
+library(ggplot2)
+kco <- new("KorAPConnection", verbose=TRUE)
+expand_grid(year=2015:2018, alternatives=c("Hate Speech", "Hatespeech")) \%>\%
+  bind_cols(corpusQuery(kco, .$alternatives, sprintf("pubDate in \%d", .$year))) \%>\%
+  mutate(tokens=corpusStats(kco, vc=vc)$tokens) \%>\%
+  ci() \%>\%
+  ggplot(aes(x=year, y=f, fill=query, color=query, ymin=conf.low, ymax=conf.high)) +
+    geom_point() + geom_line() + geom_ribbon(alpha=.3)
+
+}
