Format a Number as a Percentage in R

This page will show you how to calculate and format a number as a percentage in R.

Get Example Data

If you want to follow along with the example below you will need the data that is used. To get this data, install and load the eeptools package and then open the sample data by running the following code in R:

# Install eeptools

# Load eeptools

# Open data

Example 1: Create a Number and Format as a Percent in R in Two Steps

This example shows how to format a number as a percent in R. Unlike many statistical software packages, R does not have a data type for percent. Instead, fields containing percent signs are character data. In this example we first create the value that we want to format as a percent by dividing stulevel$attday (the number of days that a student attended school) by 180 (the number of possible days of attendance. This gives us a decimal ranging from 0 to 1. We then convert the decimal to a percent.

# Divide days attended by 180 possible days of attendance and save as attday_percent
stulevel$attday_percent <- stulevel$attday/180

# Format as percent rounded to one decimal place
stulevel$attday_percent <- paste(round(stulevel$attday_percent*100,digits=1),"%",sep="")

Example 2: Create a Number and Format as a Percent in R in One Step

In the above example I calculate a value and then format it as a percentage using two separate steps to make it clear what’s going on. It’s possible to do this in one step to save some typing:

# Create number and format as percent rounded to one decimal place
stulevel$attday_percent2 <- paste(round((stulevel$attday/180)*100,digits=1),"%",sep="")

 Example 3: Format as a Percent if the Denominator is Another Column

In the third example I extend the second example to show how to calculate and format a percent in R if the denominator comes from another field in the data frame rather than a static number.

# Create an example denominator to divide by
stulevel$possible_attendance <- 180

# Create number and format as percent rounded to one decimal place
stulevel$attday_percent3 <- paste(round((stulevel$attday/stulevel$possible_attendance)*100,digits=1),"%",sep="")

Thanks for reading! This website took a great deal of time to create. If it was helpful to you, please show it by sharing with friends, liking, or tweeting! If you have any thoughts regarding this R code please post in the comments.


Leave a Reply

Your email address will not be published. Required fields are marked *