Gross capital formation by industry (up to NACE A*64)
Data - Eurostat
Info
Last observation: Annual: 2025 (N = 41,502)
First observation: Annual: 1975 (N = 37,145)
Last data update: 23 jul 2026, 23:13. Last compile: 24 jul 2026, 02:40
Structure
France, Italy, Germany
C - Manufacturing
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "IT", "DE"),
nace_r2 == "C",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_3flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
B-E - Energy
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "IT", "DE"),
nace_r2 == "B-E",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_3flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
France, Italy, United Kingdom, Spain, Germany
TOTAL investment
N11G - Total
Table
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
asset10 == "N11G",
time == "2021") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
mutate(values = 100*values/gdp) %>%
select_if(~ n_distinct(.) > 1) %>%
select(-geo, -gdp) %>%
spread(Geo, values) %>%
arrange(-France) %>%
print_table_conditional()TOTAL - All sectors
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "TOTAL",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = scales::percent_format(accuracy = 1))
J - Information - communication
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "J",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("J - Information - communication\n% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
C - Manufacturing
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "C",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
M - Professional, scientific and technical activities
All
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "M",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("M - Professional, scientific and technical activities\n% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
N117G
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "M",
asset10 == "N117G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("M - Professional, scientific and technical activities\n% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
B-E - Industry
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "B-E",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
F - Construction
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "CH", "DE"),
nace_r2 == "F",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_4flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
C20 - Chemicals
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "C20",
asset10 == "N11G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_3flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
labels = scales::percent_format(accuracy = .1))
N117G - Intellectual property products (gross)
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "TOTAL",
asset10 == "N117G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = scales::percent_format(accuracy = 1))
N1132G - ICT equipment (gross)
Code
nama_10_a64_p5 %>%
filter(unit == "CP_MEUR",
geo %in% c("FR", "NL", "IT", "ES", "DE"),
nace_r2 == "TOTAL",
asset10 == "N1132G") %>%
left_join(nama_10_gdp %>%
filter(na_item == "B1GQ",
unit == "CP_MEUR") %>%
select(geo, time, gdp = values),
by = c("geo", "time")) %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/gdp) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("% of GDP") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 200, .2),
labels = scales::percent_format(accuracy = .1))
Investissement en France
Long
Code
nama_10_a64_p5 %>%
filter(geo == "FR",
na_item == "P51G",
unit == "CP_MEUR",
time == "2018") %>%
select(nace_r2, Nace_r2, asset10, Asset10, values) %>%
arrange(-values) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}Large
Code
nama_10_a64_p5 %>%
filter(geo == "FR",
na_item == "P51G",
unit == "CP_MEUR",
time == "2018") %>%
select(nace_r2, Nace_r2, asset10, values) %>%
spread(asset10, values) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}France, Germany, Italy, Netherlands, Spain
N11G - All
Code
nama_10_a64_p5 %>%
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
nace_r2 == "TOTAL",
asset10 == "N11G") %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
mutate(values = 100*values/values[date == as.Date("1995-01-01")]) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
N1132G - ICT equipment (gross)
Code
nama_10_a64_p5 %>%
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
nace_r2 == "TOTAL",
asset10 == "N1132G") %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
mutate(values = 100*values/values[date == as.Date("1995-01-01")]) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
Information -communication
Code
nama_10_a64_p5 %>%
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
nace_r2 == "J",
asset10 == "N11G") %>%
year_to_date %>%
filter(date >= as.Date("1995-01-01")) %>%
left_join(colors, by = c("Geo" = "country")) %>%
group_by(Geo) %>%
mutate(values = 100*values/values[date == as.Date("1995-01-01")]) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_5flags +
scale_color_identity() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
