How to group and summarise a data frame in R
· 1 min read · Updated March 14, 2026 · beginner
r group-by summarise dplyr
Grouping and summarising is essential for exploring data by categories.
With dplyr
library(dplyr)
# Group by department and calculate mean salary
avg_salary <- df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary, na.rm = TRUE))
# Multiple summary statistics
summary_stats <- df %>%
group_by(department) %>%
summarise(
mean_salary = mean(salary, na.rm = TRUE),
median_salary = median(salary, na.rm = TRUE),
n = n()
)
With base R
# Using aggregate
avg_salary <- aggregate(salary ~ department, data = df, FUN = mean)
# Simple counts with table
dept_counts <- table(df$department)
With data.table
library(data.table)
dt <- as.data.table(df)
# Group and summarise
avg_salary <- dt[, .(mean_salary = mean(salary)), by = department]
Common Summary Functions
| Function | Description |
|---|---|
mean() | Average value |
median() | Middle value |
sum() | Total |
min() / max() | Extremes |
sd() | Standard deviation |
n() / .N | Row count |
See Also
- group_by() — dplyr grouping
- filter() — Filter rows
- mutate() — Add columns