Skip to contents

Analyzing Career Mobility in the CMap Dataset: Practical Examples

This vignette provides hands-on examples for analyzing job specialization, title mapping, and promotion networks using the cmapr package and the CMap Career Mobility Dataset.

The examples are designed to help you efficiently explore and visualize the data, leveraging tidyverse tools for clarity and reproducibility.


1. Loading and Inspecting Specialization Data

The specialization index (SI) quantifies how distinctive a job title is within its sector.

si_data <- load_sector_specialization(file.path(dataset_dir, "titles/si"))
si_data |>
  group_by(sector) |>
  arrange(desc(si)) |>
  slice_head(n = 10) |>
  select(sector, title, si)

Tip:
To find the most specialized roles in a sector, filter by high SI scores.

si_data |>
  filter(sector == "Information Technology") |>
  arrange(desc(si)) |>
  slice_head(n = 5)

2. Mapping and Summarizing Job Titles

The title mapping data helps you understand how raw job titles are standardized and grouped.

title_map <- load_title_map(file.path(dataset_dir, "titles/map"))

# View available columns
names(title_map)

# Count titles by sector
title_map |>
  count(sector, title_cleaned, sort = TRUE)

Tip:
Use this mapping to collapse variant job titles and compute sector-level frequencies.

title_map |>
  group_by(sector, title_cleaned) |>
  summarise(total = sum(frequency_cleaned, na.rm = TRUE), .groups = "drop") |>
  arrange(sector, desc(total))

3. Exploring Promotion Networks

Promotion networks show observed transitions between job titles, both validated (manually reviewed) and unvalidated (algorithmic).

Validated Promotions

validated_edges <- load_validated_promotions("edges", file.path(dataset_dir, "promotions/validated"))
validated_nodes <- load_validated_promotions("nodes", file.path(dataset_dir, "promotions/validated"))

Unvalidated Promotions

unvalidated_edges <- load_unvalidated_promotions("edges", file.path(dataset_dir, "promotions/unvalidated"))
unvalidated_nodes <- load_unvalidated_promotions("nodes", file.path(dataset_dir, "promotions/unvalidated"))

Tip:
Investigate the most frequent promotion paths in a sector:

unvalidated_edges |>
  filter(sector == "Healthcare") |>
  arrange(desc(frequency)) |>
  slice_head(n = 5) |>
  select(from, to, frequency, promotion_prob)

4. Visualizing Career Transitions

You can visualize promotion networks interactively (if HTML files are available):

load_validated_promotions("network", file.path(dataset_dir, "promotions/validated"), open_html = "US_finance.html")

Or plot a simple summary using ggplot2:

top_edges <- unvalidated_edges |>
  group_by(sector) |>
  arrange(desc(frequency)) |>
  slice_head(n = 5)

ggplot(top_edges, aes(x = reorder(from, frequency), y = frequency, fill = to)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~sector, scales = "free") +
  labs(title = "Most Frequent Career Transitions by Sector",
       x = "From Title",
       y = "Frequency") +
  theme_minimal(base_size = 12)

5. Further Exploration and Research

  • Combine cmapr data tables with external labor market data for advanced modeling.

  • Use the specialization index to identify emerging or declining roles.

  • Explore cross-sector mobility patterns to inform workforce development.

References:


These examples provide a foundation for your own research and exploration of global career mobility.
For more advanced analyses, see additional articles or the package reference.