Skip to content
R for the Rest of Us Logo

Use the scales Package for Nicely Formatted Values

This lesson is locked

Get access to all lessons in this course.

If the video is not playing correctly, you can watch it in a new window


Click on the transcript to go to that point in the video. Please note that transcripts are auto generated and may contain minor inaccuracies.

Your Turn

  1. Make a new variable called percent_display that shows the percent_of_total_enrollment variable as a nicely formatted percent (rounded to the nearest whole number)

  2. Make sure you save this as highlight_district (i.e. don’t just display the result)

Learn More

The best place to learn more about the scales package is its documentation website. You’ll see that you can format a wide range of values using this package, including dollar values, dates, times, and more.

Dana Siedel gave a nice talk at rstudio::conf 2020 about the scales package that is well worth a 20-minute watch!

Have any questions? Put them below and we will help you out!

You need to be signed-in to comment on this post. Login.

Juan Clavijo

Juan Clavijo

November 28, 2021


I had already rounded my proportions and multiplied by 100 so I now have 39.4, for example. when running this I get 3940%. Is there a way to make it a 39.4% without undoing the previous rounding? Also, do I need to do this if I already have the 39.4 for graphing purposes?

When I run highlight_dataframe <- mutate(percent_display = percent('Percent of Total', accuracy = 1)) I get the error: Error in UseMethod("round_any") : no applicable method for 'round_any' applied to an object of class "character"

If i remove the ", accuracy = 1" I get the error: "Error in x * scale : non-numeric argument to binary operator"

but the 'Percent of Total' variable is numeric (when I mouseover, it says "numeric with range 0-1"

I work with a step like this pretty often, but always seem to run into some complication or other. I like the idea here of making a completely new column for the display value. I see that scales::percent() has been deprecated in favor of scales::label_percent(). But label_percent() says it's designed to be used in a labels argument in a ggplot scale. Do you have a sense of what the consequences are (if any) of using it outside that context, like in a simple mutate() of the sort you're doing here?