Indicator of negotiated wage rates - INW

Data - ECB

Structure

Overview

Code
freq_dominant <- INW |>
  filter(!is.na(OBS_VALUE)) |>
  count(FREQ, sort = TRUE) |>
  slice(1) |>
  pull(FREQ)

convert_fn <- switch(freq_dominant,
  "A" = year_to_date, "Q" = quarter_to_date, "M" = month_to_date,
  "H" = semester_to_date, "W" = week_to_date, "D" = day_to_date, "B" = day_to_date,
  year_to_date)

INW |>
  filter(!is.na(OBS_VALUE), FREQ == freq_dominant) |>
  group_by(TIME_PERIOD) |>
  summarise(OBS_VALUE = mean(OBS_VALUE, na.rm = TRUE), .groups = "drop") |>
  convert_fn() |>
  ggplot() + theme_minimal() + xlab("") + ylab("Average value across all series") +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  scale_x_date(date_labels = "%Y")

Euro-area slack

Negotiated wage growth, euro area

Code
INW |>
  filter(REF_AREA == "U2", FREQ == "Q", !is.na(OBS_VALUE)) |>
  quarter_to_date() |>
  ggplot() + theme_minimal() + xlab("") +
  ylab("Negotiated wage rates (% year-on-year)") +
  geom_hline(yintercept = 3, linetype = "dashed") +
  geom_line(aes(x = date, y = OBS_VALUE)) +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 3), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10, 1),
                     labels = function(x) paste0(x, "%"))