#------------------------------------------------------------ # Example Frequency Table Using Built-in mtcars Dataset #------------------------------------------------------------ library(dplyr) library(knitr) #------------------------------------------------------------ # Load Data #------------------------------------------------------------ data("mtcars") # Create a working copy cars <- mtcars # Create a year-like variable for demonstration cars$year <- ifelse(cars$cyl == 4, 2012, ifelse(cars$cyl == 6, 2013, 2014)) #------------------------------------------------------------ # Examine Distribution of Year #------------------------------------------------------------ table(cars$year) #------------------------------------------------------------ # Create Frequency Table for Year 2012 #------------------------------------------------------------ freq.df <- cars %>% filter(year == 2012) %>% group_by( year, am, # transmission gear, # number of gears carb # number of carburetors ) %>% summarise(count = n(), .groups = "drop") # Convert tibble to data frame freq.df <- data.frame(freq.df) #------------------------------------------------------------ # Create Total Row #------------------------------------------------------------ last.row <- c( "Total", rep("-", ncol(freq.df) - 2), prettyNum(sum(freq.df$count), big.mark = ",") ) #------------------------------------------------------------ # Format Counts #------------------------------------------------------------ freq.df2 <- within(freq.df, { count <- prettyNum(count, big.mark = ",") }) #------------------------------------------------------------ # Write Output to a Text File #------------------------------------------------------------ options(width = 120) sink("mtcars_frequency_table.txt") final.table <- rbind(freq.df2, last.row) kable(final.table, format = "markdown") sink() #------------------------------------------------------------ # Display Table in Console #------------------------------------------------------------ print(final.table)