# Quite a few requirements so read closely
# - variable must filter out NAs
# - variable must be a factor
# - variable must have factor labels (i think)
# - must be slightly comfortable with dplyr
# FUNCTION
tbl_steele <- function(data, names){
require(htmlTable)
a <- lapply(data, function(x) freq(x, plot = F))
b <- do.call(rbind, a)
remove_total <- "Total"
d <- b[!rownames(b) %in% remove_total, ]
e <- data.frame(d)
e_prettyNum <- prettyNum(e$Frequency, big.mark = ",", scientific = FALSE, preserve.width = "none")
f <- cbind(paste(e_prettyNum, " ", "(", round(e$Percent, 1), ")", sep = ""))
g <- lapply(data, function(x) length(levels(x)))
g1 <- do.call(rbind, g)
h <- htmlTable(f, rnames = rownames(d), rgroup = names, n.rgroup = c(g1))
return(h)
}
# EXAMPLE
# requires dplyr as I use the filter function to filter out NAs as function will not properly run
# Again, filter out NAs before passing varaible through function
mtcars %>%
select(gear) %>%
transmute(gear_fctr = factor(gear,
levels = c(3, 4, 5),
labels = c("3. Three", "4. Four", "5. Five"))) %>%
tbl_steele(data = ., names = names(.))
# COUNTER EXAMPLE TO "UNFACTORED" VARIABLE
# Change transmute to mutate and you'll see the weird behavior
mtcars %>%
select(gear) %>%
mutate(gear_fctr = factor(gear,
levels = c(3, 4, 5),
labels = c("3. Three", "4. Four", "5. Five"))) %>%
tbl_steele(data = ., names = names(.))
# function is in its infancy, hence the strict requirements (sorry)