Labour market transitions - quarterly data - lfsi_long_q
Data - Eurostat
Info
Last observation: Quarterly: 2026Q1 (N = 7,344)
First observation: Quarterly: 2003Q2 (N = 216)
Last data update: 11 aoû 2026, 18:22. Last compile: 12 aoû 2026, 00:55
Structure
Unemployment to Employment Transition Rate
France, Spain, Italy, Poland, Portugal
Code
lfsi_long_q |>
filter(geo %in% c("FR", "ES", "IT", "PL", "PT"),
sex == "T",
s_adj == "SA",
unit == "PC_UNE",
indic_em == "U_E") |>
quarter_to_date() |>
mutate(values = values/100) |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + scale_color_identity() + add_flags +
scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
xlab("") + ylab("Unemployed moving into employment (% of unemployed)") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1))
Latest Quarter: Labour Market Fluidity
France
Code
latest_q_fr <- lfsi_long_q |>
filter(geo == "FR",
sex == "T",
s_adj == "SA",
unit != "THS_PER",
!is.na(values)) |>
summarise(m = max(time)) |>
pull(m)
lfsi_long_q |>
filter(geo == "FR",
sex == "T",
s_adj == "SA",
unit != "THS_PER",
time == latest_q_fr) |>
mutate(values = values/100) |>
select(indic_em, Indic_em, values) |>
arrange(-values) |>
print_table_conditional()| indic_em | Indic_em | values |
|---|---|---|
| E_E | Transition employment - employment | 0.958 |
| I_I | Transition outside the labour force - outside the labour force | 0.926 |
| U_U | Transition unemployment - unemployment | 0.533 |
| U_E | Transition unemployment - employment | 0.269 |
| U_I | Transition unemployment - outside the labour force | 0.198 |
| I_E | Transition outside the labour force - employment | 0.037 |
| I_U | Transition outside the labour force - unemployment | 0.037 |
| E_I | Transition employment - outside the labour force | 0.022 |
| E_U | Transition employment - unemployment | 0.020 |
| I_E | Transition outside the labour force - employment | NA |
| I_I | Transition outside the labour force - outside the labour force | NA |
| I_U | Transition outside the labour force - unemployment | NA |
| U_E | Transition unemployment - employment | NA |
| U_I | Transition unemployment - outside the labour force | NA |
| U_U | Transition unemployment - unemployment | NA |
| E_E | Transition employment - employment | NA |
| E_I | Transition employment - outside the labour force | NA |
| E_U | Transition employment - unemployment | NA |
| U_E | Transition unemployment - employment | NA |
| U_I | Transition unemployment - outside the labour force | NA |
| U_U | Transition unemployment - unemployment | NA |
| E_E | Transition employment - employment | NA |
| E_I | Transition employment - outside the labour force | NA |
| E_U | Transition employment - unemployment | NA |
| I_E | Transition outside the labour force - employment | NA |
| I_I | Transition outside the labour force - outside the labour force | NA |
| I_U | Transition outside the labour force - unemployment | NA |
France
Table
Code
lfsi_long_q |>
filter(geo == "FR",
sex == "T",
s_adj == "SA",
unit == "THS_PER",
time %in% c("2015Q2", "2021Q2", "2019Q2", "2017Q2")) |>
filter(!is.na(values)) |>
select(indic_em, Indic_em, time, values) |>
spread(time, values) |>
print_table_conditional()| indic_em | Indic_em | 2015Q2 | 2017Q2 | 2019Q2 | 2021Q2 |
|---|---|---|---|---|---|
| E_E | Transition employment - employment | 25265 | 25565 | 26004 | 26288 |
| E_I | Transition employment - outside the labour force | 554 | 553 | 601 | 644 |
| E_U | Transition employment - unemployment | 524 | 447 | 434 | 441 |
| I_E | Transition outside the labour force - employment | 448 | 617 | 499 | 705 |
| I_I | Transition outside the labour force - outside the labour force | 16609 | 16882 | 17132 | 16835 |
| I_U | Transition outside the labour force - unemployment | 672 | 723 | 628 | 706 |
| U_E | Transition unemployment - employment | 643 | 638 | 599 | 630 |
| U_I | Transition unemployment - outside the labour force | 545 | 562 | 567 | 581 |
| U_U | Transition unemployment - unemployment | 1867 | 1640 | 1411 | 1233 |
EE, II
Code
lfsi_long_q |>
filter(geo == "FR",
sex == "T",
s_adj == "SA",
unit != "THS_PER",
indic_em %in% c("E_E", "I_I")) |>
filter(!is.na(values)) |>
select(indic_em, Indic_em, time, values) |>
quarter_to_date() |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = values/100, color = Indic_em)) +
scale_color_manual(values = viridis(3)[1:2]) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.3, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
labels = scales::percent_format(acc = 1))
Italy
EE, II
Code
lfsi_long_q |>
filter(geo == "IT",
sex == "T",
s_adj == "SA",
unit != "THS_PER",
indic_em %in% c("E_E", "I_I")) |>
filter(!is.na(values)) |>
select(indic_em, Indic_em, time, values) |>
quarter_to_date() |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = values/100, color = Indic_em)) +
scale_color_manual(values = viridis(3)[1:2]) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.3, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
labels = scales::percent_format(acc = 1))