A function to calculate and format a count and percent.

fmt_cnt_pct(x, denom = NULL, format = "%5.1f")



The input data vector or data frame column.


The denominator to use for the percentage. By default, the parameter is NULL, meaning the function will use the number of non-missing values of the data vector as the denominator. Otherwise, supply the denominator as a numeric value.


A formatting string suitable for input into the sprintf function. By default, this format is defined as "%5.1f", which displays the value with one decimal place.


A character vector of formatted counts and percents.


This function calculates a percent and appends to the provided count. The input vector is assumed to contain the counts. This function will not perform counting. It will calculate percentages and append to the given counts.

The result is then formatted using sprintf. By default, the number of non-missing values in the input data vector is used as the denominator. Alternatively, you may supply the denominator using the denom parameter. You may also control the percent format using the format parameter. The function will return any NA values in the input data unaltered.

If the calculated percentage is between 0% and 1%, the function will display "(< 1.0%)" as the percentage value. Zero values will be displayed as "( 0.0%)"

See also


v1 <- c(4, 3, 8, 6, 9, 5, NA, 0, 7, 4)

# Format count and percent

# Output
# "4 ( 44.4%)" "3 ( 33.3%)" "8 ( 88.9%)" "6 ( 66.7%)" "9 (100.0%)" 
# "5 ( 55.6%)" NA           "0 (  0.0%)" "7 ( 77.8%)" "4 ( 44.4%)"