Skip to content

Instantly share code, notes, and snippets.

@dantalus
Created January 13, 2015 14:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dantalus/e181ea23abc6e82239ab to your computer and use it in GitHub Desktop.
Save dantalus/e181ea23abc6e82239ab to your computer and use it in GitHub Desktop.
Summarize data using R for latex tables
summaryA <- function(data, ...){
# Example
#
# data <- data.frame("A" = rnorm(500, 0, 1),
# "B" = rnorm(500, 0, 1),
# "C" = factor(sample(c("Ca", "Cb"), 500, replace = T)))
#
# a <- summaryA(data)
#
a <- list()
v <- 1
for (i in seq_len(ncol(data))) {
if(is.numeric(data[, i])){
a[[v]] <- paste(colnames(data[i]), " & ",
sum(is.na(data[, i])), " & ",
round(quantile(data[, i], 0.50, na.rm = T), 1),
"(",
round(quantile(data[, i], 0.25, na.rm = T), 1),
" to ",
round(quantile(data[, i], 0.75, na.rm = T), 1),
")",
sep = "")
v <- v + 1
}
if(is.factor(data[, i])){
a[[v]] <- paste(colnames(data[i]), " & ",
sum(is.na(data[, i])), " & & ",
sep = "")
for (j in 1:length(table(data[,i]))){
a[[v + j]] <- paste("\\multicolumn{1}{r}{",
levels(data[, i])[j],
"} & & ",
round(table(data[, i])[j] / sum(table(data[, i]))
* 100),
"\\%",
sep = "")
}
v <- v + j + 1
}
}
do.call(rbind, a)
}
summaryB <- function(data, ...){
# Example
#
# data <- data.frame("A" = rnorm(500, 0, 1),
# "B" = rnorm(500, 0, 1),
# "C" = factor(sample(c("Ca", "Cb"), 500, replace = T)))
#
# a <- summaryB(data)
#
a <- list()
v <- 1
for (i in seq_len(ncol(data))) {
if(is.numeric(data[, i])){
a[[v]] <- paste(" & ",
round(quantile(data[, i], 0.50, na.rm = T), 1),
"(",
round(quantile(data[, i], 0.25, na.rm = T), 1),
" to ",
round(quantile(data[, i], 0.75, na.rm = T), 1),
")",
sep = "")
v <- v + 1
}
if(is.factor(data[,i])){
a[[v]] <- paste(" & ",
sep = "")
for (j in 1:length(table(data[, i]))){
a[[v + j]] <- paste(" & ",
round(table(data[,i])[j] / sum(table(data[,i]))
* 100),
"\\%",
sep = "")
}
v <- v + j + 1
}
}
do.call(rbind, a)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment