Taxing Wages - Comparative tables - AWCOMP
Data - OECD
Last observation: 2022 (N = 4768)
First observation: 2000 (N = 4768)
Last data update: 02 août 2026, 08:56
Last compile: 02 sept. 2026, 23:12
Structure
obsTime
Code
AWCOMP |>
group_by(obsTime) |>
summarise(Nobs = n()) |>
arrange(desc(obsTime)) |>
print_table_conditional()| obsTime | Nobs |
|---|---|
| 2022 | 4768 |
| 2021 | 4768 |
| 2020 | 4768 |
| 2019 | 4768 |
| 2018 | 4768 |
| 2017 | 4768 |
| 2016 | 4768 |
| 2015 | 4768 |
| 2014 | 4768 |
| 2013 | 4768 |
| 2012 | 4768 |
| 2011 | 4768 |
| 2010 | 4768 |
| 2009 | 4768 |
| 2008 | 4768 |
| 2007 | 4768 |
| 2006 | 4768 |
| 2005 | 4768 |
| 2004 | 4768 |
| 2003 | 4768 |
| 2002 | 4768 |
| 2001 | 4768 |
| 2000 | 4768 |
Countries
Germany
Code
AWCOMP |>
filter(COU == "DEU",
UNIT == "PC",
FAM_TYPE == "MARRIED2") |>
year_to_date() |>
left_join(AWCOMP_var$INDICATOR, by = c("INDICATOR")) |>
mutate(obsValue = obsValue/100) |>
ggplot() +
geom_line(aes(x = date, y = obsValue, color = Indicator, linetype = Indicator)) +
scale_color_manual(values = viridis(11)[1:10]) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
theme(legend.position = c(0.65, 0.6),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 100, 5),
labels = percent_format(accuracy = 1)) +
ylab("Tax Rate (%)") + xlab("")
France
Code
AWCOMP |>
filter(COU == "FRA",
UNIT == "PC",
FAM_TYPE == "MARRIED2") |>
year_to_date() |>
left_join(AWCOMP_var$INDICATOR, by = c("INDICATOR")) |>
mutate(obsValue = obsValue/100) |>
ggplot() +
geom_line(aes(x = date, y = obsValue, color = Indicator, linetype = Indicator)) +
scale_color_manual(values = viridis(11)[1:10]) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
theme(legend.position = c(0.65, 0.6),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 100, 5),
labels = percent_format(accuracy = 1)) +
ylab("Tax Rate (%)") + xlab("")
Wages: Gross vs. Net
2021
Code
AWCOMP |>
filter(obsTime == "2021",
INDICATOR %in% c("5_1", "5_2"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
left_join(AWCOMP_var$INDICATOR, by = "INDICATOR") |>
select(COU, Cou, Indicator, obsValue) |>
spread(Indicator, obsValue) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Cou))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) |>
arrange(-`Total gross earnings before taxes in US dollars using PPP exchange rates`) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}2020
Code
AWCOMP |>
filter(obsTime == "2020",
INDICATOR %in% c("5_1", "5_2"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
left_join(AWCOMP_var$INDICATOR, by = "INDICATOR") |>
select(COU, Cou, Indicator, obsValue) |>
spread(Indicator, obsValue) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Cou))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) |>
arrange(-`Total gross earnings before taxes in US dollars using PPP exchange rates`) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}2000
Code
AWCOMP |>
filter(obsTime == "2000",
INDICATOR %in% c("5_1", "5_2"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
left_join(AWCOMP_var$INDICATOR, by = "INDICATOR") |>
select(COU, Cou, Indicator, obsValue) |>
spread(Indicator, obsValue) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Cou))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) |>
arrange(-`Net income after taxes in US dollars using PPP exchange rates`) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}France, Germany, Italy, United States
Gross/net
Code
AWCOMP |>
filter(COU %in% c("FRA", "DEU", "ITA", "USA", "CHE"),
INDICATOR %in% c("5_1", "5_2"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
left_join(AWCOMP_var$INDICATOR, by = c("INDICATOR")) |>
year_to_date() |>
group_by(Cou) |>
add_flag_color("Cou") |>
rename(Location = Cou) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color, linetype = Indicator)) +
scale_color_identity() + add_10flags +
theme_minimal() + xlab("") + ylab("Wages") +
scale_x_date(breaks = seq(1910, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
theme(legend.position = c(0.4, 0.95),
legend.title = element_blank()) +
scale_y_log10(breaks = 1000*seq(-10, 300, 10),
labels = dollar_format(accuracy = 1))
Gross
Value
Code
AWCOMP |>
filter(COU %in% c("FRA", "DEU", "ITA", "USA", "CHE"),
INDICATOR %in% c("5_1"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
year_to_date() |>
group_by(Cou) |>
add_flag_color("Cou") |>
rename(Location = Cou) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_5flags +
theme_minimal() + xlab("") + ylab("Wages") +
scale_x_date(breaks = seq(1910, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = 1000*seq(-10, 300, 10),
labels = dollar_format(accuracy = 1))
Base 100
Code
AWCOMP |>
filter(COU %in% c("FRA", "DEU", "ITA", "USA", "CHE"),
INDICATOR %in% c("5_1"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
year_to_date() |>
group_by(Cou) |>
mutate(obsValue = 100*obsValue/obsValue[date == as.Date("2000-01-01")]) |>
add_flag_color("Cou") |>
rename(Location = Cou) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_5flags +
theme_minimal() + xlab("") + ylab("Wages") +
scale_x_date(breaks = seq(1910, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = seq(-10, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
Net
Value
Code
AWCOMP |>
filter(COU %in% c("FRA", "DEU", "ITA", "USA", "CHE"),
INDICATOR %in% c("5_2"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
year_to_date() |>
group_by(Cou) |>
add_flag_color("Cou") |>
rename(Location = Cou) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_5flags +
theme_minimal() + xlab("") + ylab("Wages") +
scale_x_date(breaks = seq(1910, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = 1000*seq(-10, 300, 10),
labels = dollar_format(accuracy = 1))
Base 100
Code
AWCOMP |>
filter(COU %in% c("FRA", "DEU", "ITA", "USA", "CHE"),
INDICATOR %in% c("5_2"),
FAM_TYPE == "SINGLE2") |>
left_join(AWCOMP_var$COU, by = "COU") |>
year_to_date() |>
group_by(Cou) |>
add_flag_color("Cou") |>
rename(Location = Cou) |>
mutate(obsValue = 100*obsValue/obsValue[date == as.Date("2000-01-01")]) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_5flags +
theme_minimal() + xlab("") + ylab("Wages") +
scale_x_date(breaks = seq(1910, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = seq(-10, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))


