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

FunctionDescription
mean()Average value
median()Middle value
sum()Total
min() / max()Extremes
sd()Standard deviation
n() / .NRow count

See Also