Hours worked per week of full-time employment - tps00071

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 35)

First observation: Annual: 2014 (N = 37)

Last data update: 26 avr 2026, 20:56. Last compile: 25 jul 2026, 20:28

Structure

All Countries

Code
tps00071 %>%
  filter(time %in% c("2008", "2011", "2014", "2019")) %>%
  
  select(geo, Geo, time, values) %>%
  spread(time, values) %>%
  arrange(-`2019`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

France, Germany, Portugal

Code
tps00071 %>%
  filter(geo %in% c("FR", "DE", "PT")) %>%
  year_to_enddate %>%
  
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line() + theme_minimal()  +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(40, 44, 0.2)) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Hours worked per week of full-time employment")

France, Italy, Greece

Code
tps00071 %>%
  filter(geo %in% c("FR", "IT", "EL")) %>%
  year_to_enddate %>%
  
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line() + theme_minimal()  +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(40, 50, 0.5)) +
  theme(legend.position = c(0.15, 0.55),
        legend.title = element_blank()) +
  xlab("") + ylab("Hours worked per week of full-time employment")

Netherlands, Denmark, Sweden

Code
tps00071 %>%
  filter(geo %in% c("NL", "DK", "SE")) %>%
  year_to_enddate %>%

  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(color = ifelse(geo == "NL", color2, color)) %>%
  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(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Hours worked per week of full-time employment")

Latest Year: All Countries

Code
latest_y <- tps00071 %>%
  filter(!is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

tps00071 %>%
  filter(time == latest_y) %>%
  mutate(values = round(values, 1)) %>%
  select(Geo, values) %>%
  arrange(-values) %>%
  rename(!!paste0("Hours worked per week (", latest_y, ")") := values) %>%
  print_table_conditional()