How to calculate a cumulative sum in R

· 1 min read · Updated March 15, 2026 · beginner
r cumulative-sum vectors dplyr

A cumulative sum adds up values sequentially as you move through a vector.

With base R

Use cumsum():

x <- c(1, 2, 3, 4, 5)
cumsum(x)
# [1]  1  3  6 10 15

sales <- c(100, 150, 200, 175, 225)
cumsum(sales)
# [1] 100 250 450 625 850

With dplyr

Add a cumulative sum column:

library(dplyr)

df <- data.frame(
  month = c("Jan", "Feb", "Mar", "Apr", "May"),
  sales = c(100, 150, 200, 175, 225)
)

df <- df %>% mutate(total_sales = cumsum(sales))
#   month sales total_sales
# 1   Jan   100          100
# 2   Feb   150          250
# 3   Mar   200          450
# 4   Apr   175          625
# 5   May   225          850

Group by category:

df %>% group_by(quarter) %>% mutate(cumulative = cumsum(sales))

With data.table

For large datasets:

library(data.table)
dt <- data.table(sales = c(100, 150, 200, 175, 225))
dt[, cumulative := cumsum(sales)]

Other cumulative functions

cumprod(1:5)  # 1  2  6 24 120 - cumulative product
cummax(1:5)   # 1  2  3  4  5 - cumulative maximum
cummin(1:5)   # 1  1  1  1  1 - cumulative minimum

See Also