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
- cumsum() — Cumulative sum, product, max, min
- dplyr::mutate() — Add new columns