Learn R Programming

tab (version 1.0)

tabfreq: Generate frequency tables for statistical reports.

Description

This function creates an I-by-J frequency table and summarizes the results in a clean table for a statistical report.

Usage

tabfreq(x, y, test="chi", xlevels=NULL, ylevels=NULL, yname="Y variable", 
        decimals=1, n=TRUE, compress=FALSE)

Arguments

x
Vector of values indicating group membership for columns of IxJ table.
y
Vector of values indicating group membership for rows of IxJ table.
test
Controls test of independence between x and y. "chi" for Pearson's chi-squared test, "fisher" for Fisher's exact test.
xlevels
Optional character vector to label the levels of x. If unspecified, the function uses generic labels.
ylevels
Optional character vector to label the levels of y. If unspecified, the function uses generic labels.
yname
Optional label for the y (row) variable.
decimals
Number of decimal places for percentages.
n
If TRUE, the table returned will include sample sizes in the column headings.
compress
If y has only two levels, setting compress to TRUE will produce a single row for n (percent) for the higher level. For example, if y is gender with 0 for female, 1 for male, setting compress=TRUE will return a table with n (percent) for males only.

Value

  • A character matrix with the requested frequency table. If you click on the matrix name under "Data" in the RStudio Workspace tab, you will see a clean table that you can copy and paste into a statistical report or manuscript.

Details

NA

References

Acknowledgment: This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-0940903.

See Also

tabmeans tablin tablog tabcox

Examples

Run this code
# Load in example dataset d
data(d)

# Create labels for treatment group, sex, and race
groups = c("Control","Treatment")
sexes = c("Female","Male")
races = c("White","Black","Mexican American","Other")

# Compare sex distribution by group, with group as column variable
freqtable1 = tabfreq(x=d$group,y=d$sex,xlevels=groups,ylevels=sexes,yname="Sex")

# Same comparison, but compress table to single row
freqtable2 = tabfreq(x=d$group,y=d$sex,xlevels=groups,yname="Male",compress=TRUE)

# Compare sex distribution by race, with race as column variable, and omit sample sizes
freqtable3 = tabfreq(x=d$race,y=d$sex,xlevels=races,yname="Sex",ylevels=sexes,n=FALSE)

# Use rbind to create single table comparing sex and race in control vs. treatment group
freqtable4 = rbind(tabfreq(x=d$group,y=d$sex,xlevels=groups,ylevels=sexes,yname="Sex"),
                   tabfreq(x=d$group,y=d$race,xlevels=groups,ylevels=races,yname="Race"))

# Click on freqtable1, freqtable2, freqtable3, and freqtable4 in the Workspace tab of 
# RStudio to see the tables that could be copied and pasted into a report or manuscript.

Run the code above in your browser using DataLab