Short-Term Statistics - STS
Data - ECB
Info
Data on wages
source | dataset | Title | .html | .rData |
---|---|---|---|---|
eurostat | earn_mw_cur | Monthly minimum wages - bi-annual data | 2025-10-01 | 2025-09-26 |
eurostat | ei_lmlc_q | Labour cost index, nominal value - quarterly data | 2025-10-01 | 2025-09-26 |
eurostat | lc_lci_lev | Labour cost levels by NACE Rev. 2 activity | 2025-10-01 | 2025-09-26 |
eurostat | lc_lci_r2_q | Labour cost index by NACE Rev. 2 activity - nominal value, quarterly data | 2025-10-01 | 2025-09-26 |
eurostat | nama_10_lp_ulc | Labour productivity and unit labour costs | 2025-10-01 | 2025-09-26 |
eurostat | namq_10_lp_ulc | Labour productivity and unit labour costs | 2025-10-01 | 2025-09-26 |
eurostat | tps00155 | Minimum wages | 2025-10-01 | 2025-09-26 |
fred | wage | Wage | 2025-10-02 | 2025-10-01 |
ilo | EAR_4MTH_SEX_ECO_CUR_NB_A | Mean nominal monthly earnings of employees by sex and economic activity -- Harmonized series | 2024-06-20 | 2023-06-01 |
ilo | EAR_XEES_SEX_ECO_NB_Q | Mean nominal monthly earnings of employees by sex and economic activity -- Harmonized series | 2024-06-20 | 2023-06-01 |
oecd | AV_AN_WAGE | Average annual wages | 2025-09-29 | 2025-09-28 |
oecd | AWCOMP | Taxing Wages - Comparative tables | 2025-09-29 | 2023-09-09 |
oecd | EAR_MEI | Hourly Earnings (MEI) | 2024-04-16 | 2024-04-16 |
oecd | HH_DASH | Household Dashboard | 2025-09-29 | 2023-09-09 |
oecd | MIN2AVE | Minimum relative to average wages of full-time workers - MIN2AVE | 2025-09-29 | 2023-09-09 |
oecd | RMW | Real Minimum Wages - RMW | 2025-09-29 | 2024-03-12 |
oecd | ULC_EEQ | Unit labour costs and labour productivity (employment based), Total economy | 2025-09-29 | 2024-04-15 |
LAST_DOWNLOAD
LAST_DOWNLOAD |
---|
2025-08-28 |
LAST_COMPILE
LAST_COMPILE |
---|
2025-10-09 |
Last
Code
%>%
STS group_by(TIME_PERIOD) %>%
summarise(Nobs = n()) %>%
arrange(desc(TIME_PERIOD)) %>%
head(1) %>%
print_table_conditional()
TIME_PERIOD | Nobs |
---|---|
2025-Q2 | 52 |
STS_CONCEPT
All
Code
%>%
STS left_join(STS_CONCEPT, by = "STS_CONCEPT") %>%
group_by(STS_CONCEPT, Sts_concept) %>%
summarise(Nobs = n()) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
Monthly
Code
%>%
STS filter(FREQ == "M") %>%
left_join(STS_CONCEPT, by = "STS_CONCEPT") %>%
group_by(STS_CONCEPT, Sts_concept) %>%
summarise(Nobs = n()) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
STS_CLASS
Code
%>%
STS left_join(STS_CLASS, by = "STS_CLASS") %>%
group_by(STS_CLASS, Sts_class) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
TITLE
All
Code
%>%
STS group_by(TITLE) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
Monthly
Code
%>%
STS filter(FREQ == "M") %>%
group_by(TITLE) %>%
summarise(Nobs = n()) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
ADJUSTMENT
Code
%>%
STS left_join(ADJUSTMENT, by = "ADJUSTMENT") %>%
group_by(ADJUSTMENT, Adjustment) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()
ADJUSTMENT | Adjustment | Nobs |
---|---|---|
N | Neither seasonally nor working day adjusted | 665809 |
W | Working day adjusted, not seasonally adjusted | 431489 |
Y | Working day and seasonally adjusted | 426094 |
S | Seasonally adjusted, not working day adjusted | 8461 |
FREQ
Code
%>%
STS left_join(FREQ, by = "FREQ") %>%
group_by(FREQ, Freq) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()
FREQ | Freq | Nobs |
---|---|---|
M | Monthly | 1478880 |
Q | Quarterly | 46214 |
A | Annual | 6759 |
REF_AREA
Code
%>%
STS left_join(REF_AREA, by = "REF_AREA") %>%
group_by(REF_AREA, Ref_area) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()
TIME_FORMAT
Code
%>%
STS group_by(TIME_FORMAT) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()
TIME_FORMAT | Nobs |
---|---|
P1M | 1478880 |
P3M | 46214 |
P1Y | 6759 |
PROD - Industrial Production Index
Table
Code
%>%
STS filter(STS_CONCEPT == "PROD",
== "M",
FREQ == "I7") %>%
REF_AREA left_join(STS_CLASS, by = "STS_CLASS") %>%
group_by(KEY, STS_CLASS, Sts_class, UNIT, TITLE, TITLE_COMPL) %>%
summarise(Nobs = n()) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
INWR - Negociated Wage Rates
Table
Code
%>%
STS filter(STS_CONCEPT == "INWR",
== "Q") %>%
FREQ left_join(STS_CLASS, by = "STS_CLASS") %>%
group_by(KEY, STS_CLASS, Sts_class, UNIT, TITLE, TITLE_COMPL) %>%
summarise(Nobs = n()) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
Quarterly
Code
%>%
STS filter(STS_CONCEPT == "INWR") %>%
filter(FREQ == "Q") %>%
quarter_to_date() %>%
select(date, OBS_VALUE, REF_AREA) %>%
ggplot() + ylab("") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE/100, color = REF_AREA)) +
#scale_color_manual(values = viridis(4)[1:3]) +
theme(legend.position = c(0.65, 0.15),
legend.title = element_blank()) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = percent_format(accuracy = 1))
Annual
Code
%>%
STS filter(STS_CONCEPT == "INWR") %>%
filter(FREQ == "A") %>%
year_to_date() %>%
select(date, OBS_VALUE, REF_AREA) %>%
ggplot() + ylab("") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE/100, color = REF_AREA)) +
#scale_color_manual(values = viridis(4)[1:3]) +
theme(legend.position = c(0.65, 0.15),
legend.title = element_blank()) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = percent_format(accuracy = 1))
U2
All
Code
%>%
STS filter(KEY %in% c("STS.Q.U2.N.INWR.000000.3.ANR")) %>%
quarter_to_date() %>%
select(date, OBS_VALUE, REF_AREA) %>%
ggplot() + ylab("") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE/100)) +
#scale_color_manual(values = viridis(4)[1:3]) +
theme(legend.position = c(0.65, 0.15),
legend.title = element_blank()) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = percent_format(accuracy = 1))
2017
Code
%>%
STS filter(KEY %in% c("STS.Q.U2.N.INWR.000000.3.ANR")) %>%
quarter_to_date() %>%
filter(date >= as.Date("2017-01-01")) %>%
select(date, OBS_VALUE, REF_AREA) %>%
ggplot() + ylab("") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE/100)) +
#scale_color_manual(values = viridis(4)[1:3]) +
theme(legend.position = c(0.65, 0.15),
legend.title = element_blank()) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = percent_format(accuracy = 1))