Skip to content

Instantly share code, notes, and snippets.

@hauselin
Last active July 19, 2016 03:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hauselin/63366a2b60c4445648c559a8682204d2 to your computer and use it in GitHub Desktop.
Save hauselin/63366a2b60c4445648c559a8682204d2 to your computer and use it in GitHub Desktop.
summarySE2 <- function (data = NULL, measurevar, groupvars = NULL, na.rm = TRUE, conf.interval = 0.95) {
library(data.table)
data <- data.table(data)
length2 <- function(x, na.rm = FALSE) {
if (na.rm)
sum(!is.na(x))
else length(x)
}
datac <- data[, .(lapply(.SD, length2, na.rm = na.rm),
lapply(.SD, mean, na.rm = na.rm),
lapply(.SD, sd, na.rm = na.rm)),
by = groupvars, .SDcols = measurevar]
names(datac) <- c(groupvars, "N", measurevar, "sd")
setkeyv(datac, groupvars)
datac[, se := unlist(sd) / sqrt(unlist(N))] #compute standard error
ciMult <- qt(conf.interval / 2 + 0.5, unlist(datac$N) - 1)
datac[, ci := se * ciMult]
datac <- data.frame(datac)
return(datac)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment