How to compute each row as a percentage of total in R

· 1 min read · Updated March 15, 2026 · beginner
r percentage dplyr data.table

Computing percentages shows how each value contributes to the total.

With dplyr

library(dplyr)

df <- data.frame(
  product = c("A", "B", "C", "D"),
  sales = c(150, 300, 100, 450)
)

df %>% mutate(percentage = sales / sum(sales) * 100)
#   product sales percentage
# 1       A   150      15
# 2       B   300      30
# 3       C   100      10
# 4       D   450      45

With groups:

df %>% group_by(category) %>% mutate(pct = sales / sum(sales) * 100)

Base R: df$percentage <- df$sales / sum(df$sales) * 100

data.table: dt[, percentage := sales / sum(sales) * 100]

Use na.rm = TRUE in sum() to handle missing values.

See Also