Back


Goal 9: Industry, innovation and infrastructure

Researchers


FN 9.5.2 Number of persons with PhD and researcher education
# Import
UDXISCPROD_raw <-
  statgl_url("UDXISCPROD", lang = language) %>% 
  statgl_fetch(
    ISCED11_level = 80,
    Sex           = px_all(),
    Aar           = px_all(),
    .col_code     = TRUE
    ) %>% 
  as_tibble()
 
# Transform
UDXISCPROD <- 
  UDXISCPROD_raw %>% 
  mutate(
    Aar = Aar %>% make_date(),
    Sex = Sex %>% fct_inorder()
    )

# Plot
UDXISCPROD %>% 
  ggplot(aes(
    x    = Aar,
    y    = value,
    fill = Sex
  )) +
  geom_col() +
  #facet_wrap(~ gender) +
  theme_statgl() + 
  scale_fill_statgl(reverse = TRUE) +
  theme(plot.margin = margin(10, 10, 10, 10)) +
  labs(
    title   = sdg9$figs$fig1$title[language],
    x       = " ",
    y       = sdg9$figs$fig1$y_lab[language],
    fill    = " ",
    caption = sdg9$figs$fig1$cap[language]
  )

StatBank

Method


# Transform
UDXISCPROD <- 
  UDXISCPROD_raw %>% 
  filter(Aar >= year(Sys.time()) - 5) %>% 
  #arrange(desc(time)) %>% 
  mutate(Aar = Aar %>% factor(levels = unique(Aar))) %>% 
  spread(3, 4)

# Table
UDXISCPROD %>% 
  select(-1) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = UDXISCPROD[[1]] %>% table())
2020 2021 2022 2023
Phd. Programmes
Men 27 30 27 26
Women 27 32 35 38

Business statistics


GS Distribution of businesses according to interval of aggregate salaries and shares
# Import
ESD6A_raw <-
  statgl_url("ESX6A", lang = language) %>%
  statgl_fetch(
    unit                                        = "N",
    time                                        = px_all(),
    "interval of aggregate salaries and shares" = c(LETTERS[1:8], "K"),
    .col_code                                   = TRUE
  ) %>% 
    as_tibble()

# transform
ESD6A <- 
  ESD6A_raw %>%
  mutate(
    `interval of aggregate salaries and shares` = `interval of aggregate salaries and shares` %>% str_remove_all("[A-K]|\\.") %>% trimws() %>% fct_inorder() %>% fct_rev(),
    time = time %>% make_date()
  )


# legend ...
fill_lab <- colnames(statgl_url("ESX6A", lang = language) %>% statgl_fetch() %>% as_tibble())[1] %>% str_to_sentence()

# Plot
ESD6A %>% 
  ggplot(aes(
    x    = time,
    y    = value,
    fill = `interval of aggregate salaries and shares`
  )) +
  geom_area() +
  theme_statgl() +
  scale_fill_statgl(reverse = TRUE, guide = guide_legend(reverse = TRUE)) +
  labs(
    title    = sdg9$figs$fig2$title[language],
    subtitle = sdg9$figs$fig2$sub[language],
    x        = " ",
    y        = ESD6A[["unit"]][1],
    fill     = fill_lab,
    caption  = sdg9$figs$fig2$cap[language]
  )

StatBank

Method


# col lab
col_lab        <- 1
names(col_lab) <- fill_lab


# transform
ESD6A <- 
  ESD6A_raw %>%
  mutate(
    `interval of aggregate salaries and shares` = `interval of aggregate salaries and shares` %>% 
      str_remove_all("[A-K]|\\.") %>% 
      trimws() %>% 
      fct_inorder() %>% 
      fct_rev(),
    ) %>% 
  filter(time >= Sys.time() %>% year() - 5) %>% 
  mutate(time = time %>% fct_inorder() %>% fct_rev()) %>% 
  spread(time, value) %>% 
  arrange(desc(`interval of aggregate salaries and shares`)) %>% 
  rename(col_lab)

# table
ESD6A %>% 
  select(-unit) %>% 
  statgl_table() %>% 
  add_footnote(ESD6A[["unit"]][1], notation = "symbol")
Interval of aggregate salaries and shares 2021 2020
00-10 708 620
10-50 1.360 1.020
50-100 1.114 922
100-250 1.636 1.502
250-500 1.226 1.282
500-1000 744 736
1000-5000 954 958
5000-10000 162 168
Over 10000 222 200
* Number of businesses



# Import
ESX5A_raw <-
  statgl_url("ESX5A", lang = language) %>%
  statgl_fetch(
    municipality                                = 1:5,
    "interval of aggregate salaries and shares" = c(LETTERS[1:8], "K"),
    unit                                        = "N",
    time                                        = px_all(),
    .col_code                                   = TRUE
    ) %>% 
  as_tibble()

ESX5A <- 
  ESX5A_raw %>% 
  rename(lonsum = `interval of aggregate salaries and shares`) %>% 
  mutate(
    time   = time %>% make_date(),
    lonsum = lonsum %>% str_remove_all("[A-K]|\\.") %>% trimws() %>% fct_inorder() %>% fct_rev()
  )


# Plot
ESX5A %>% 
  ggplot(aes(
    x    = time,
    y    = value,
    fill = lonsum
  )) +
  geom_area() +
  facet_wrap(~ municipality, scales = "free") +
  theme_statgl() + 
  scale_fill_statgl(reverse = TRUE, guide = guide_legend(reverse = TRUE)) +
  labs(
    title    = sdg9$figs$fig3$title[language],
    subtitle = sdg9$figs$fig3$sub[language],
    x        = " ",
    y        = ESX5A[[3]][1],
    fill     = fill_lab,
    caption  = sdg9$figs$fig3$cap[language]
  )

StatBank

Method


ESX5A <- 
  ESX5A_raw %>% 
  rename(lonsum = `interval of aggregate salaries and shares`) %>% 
  filter(time >= Sys.time() %>% year() - 5) %>% 
  mutate(
    time         = time %>% fct_inorder() %>% fct_rev(),
    municipality = municipality %>% fct_inorder(),
    lonsum       = lonsum %>% str_remove_all("[A-K]|\\.") %>% trimws() %>% fct_inorder() %>% fct_rev()
    ) %>% 
  spread(time, value) %>% 
  arrange(municipality, desc(lonsum))

ESX5A %>% 
  select(-c(municipality, unit)) %>% 
  rename(col_lab) %>% 
  statgl_table() %>% 
  pack_rows(index = ESX5A[["municipality"]] %>% table()) %>% 
  add_footnote(ESX5A[["unit"]][1], notation = "symbol")
Interval of aggregate salaries and shares 2021 2020
Kommune Kujalleq
00-10 37 36
10-50 70 45
50-100 58 48
100-250 62 71
250-500 45 33
500-1000 26 25
1000-5000 35 35
5000-10000 7 5
Over 10000 4 5
Kommuneqarfik Sermersooq
00-10 84 94
10-50 173 134
50-100 145 116
100-250 213 189
250-500 174 165
500-1000 150 141
1000-5000 243 247
5000-10000 42 45
Over 10000 78 69
Qeqqata Kommunia
00-10 67 51
10-50 105 66
50-100 86 66
100-250 97 98
250-500 64 70
500-1000 39 43
1000-5000 76 71
5000-10000 16 17
Over 10000 9 9
Kommune Qeqertalik
00-10 76 43
10-50 93 95
50-100 60 55
100-250 86 84
250-500 50 44
500-1000 17 20
1000-5000 22 23
5000-10000 5 5
Over 10000 3 2
Avannaata Kommunia
00-10 70 65
10-50 178 152
50-100 176 169
100-250 312 288
250-500 251 309
500-1000 120 122
1000-5000 72 75
5000-10000 7 7
Over 10000 11 10
* Number of businesses

Export of other than fish


GS Fisheries’ share of total exports
# Import
IEXSITC_raw <-
  statgl_url("IEXSITC", lang = language) %>% 
  statgl_fetch(quarter     = 0,
               processing  = c("G11", "3"),
               transaction = 2,
               time        = px_all(),
               .col_code   = TRUE
               ) %>% 
    as_tibble()

# Transform
step <-
  IEXSITC_raw %>% 
  mutate(processing = processing %>% str_remove_all("[:digit:]|\\-") %>% trimws(which = "left")) %>% 
  arrange(time, processing)

IEXSITC <- 
  step %>% 
  mutate(export = fct_reorder(processing, -value, sum, na.rm = TRUE),
         time = make_date(time),
         value = value / 10^9) 
# Plot
IEXSITC %>% 
  ggplot(aes(
    x = time,
    y = value, 
    fill = export
  )) +
  geom_area(position = "identity") +
  theme_statgl() +
  scale_fill_statgl(reverse = TRUE) +
  labs(
    title = sdg9$figs$fig4$title[language],
    y     = sdg9$figs$fig4$y_lab[language],
    x     = " ",
    fill  = " ",
    caption = sdg9$figs$fig4$cap[language]
  )

StatBank

Method


# Transform
IEXSITC <- 
  step %>% 
  mutate(
    export = fct_reorder(processing, -value, sum, na.rm = TRUE),
    value = value / 10^9
    ) 

tab <- 
  IEXSITC %>% 
  select(-2, -3) %>% 
  #arrange(desc(time)) %>% 
  filter(time >= year(Sys.time()) - 5) %>% 
  mutate(time = time %>% factor(levels = unique(time))) %>% 
  spread(time, value)

# Table
tab %>% 
  select(-1) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = tab[[1]] %>% table()) %>% 
  row_spec(1, bold = TRUE) %>% 
  add_footnote(sdg9$figs$fig4$foot[language], notation = "symbol")
2020 2021 2022 2023 2024 2025
Whole year
Total 5,30 5,06 5,88 6,21 5,21 NA
Fish (Not Marine Mammals), Crustaceans, Molluscs And Aquatic Invertebrates, And Preparations Thereo 4,85 4,78 5,64 5,86 5,08 NA
* Billons (DKK)
# Import
IEXSITC_raw <-
  statgl_url("IEXSITC", lang = language) %>%
  statgl_fetch(processing  = px_all(),
               transaction = 2,
               time        = px_all(),
               .col_code   = TRUE
               ) %>% 
    as_tibble()

# Transform
IEXSITC <- 
  IEXSITC_raw %>% 
  filter(processing %in% unique(IEXSITC_raw[[1]])[c(16, 26, 45, 55, 65, 74)]) %>% 
  mutate(
    time       = time %>% make_date(),
    value      = value / 10^6,
    processing = processing %>% str_remove_all("[:digit:]|\\-") %>% trimws()
    )

# Plot
IEXSITC %>% 
  ggplot(aes(
    x = time, 
    y = value,
    fill = processing
    )) +
  geom_area() + 
  facet_wrap(~ processing, labeller = label_wrap_gen(30)) +
  scale_fill_statgl() +
  theme_statgl() +
  theme(plot.margin = margin(10, 10, 10, 10)) +
  theme(legend.position = "none") +
  labs(
    title = sdg9$figs$fig5$title[language],
    x = " ", 
    y = sdg9$figs$fig5$y_lab[language],
    fill = " ",
    caption = sdg9$figs$fig4$cap[language]
 )

StatBank

Method


# Transform
IEXSITC <- 
  IEXSITC_raw %>% 
  filter(processing %in% unique(IEXSITC_raw[[1]])[c(16, 26, 45, 55, 65, 74)],
         time >= year(Sys.time()) -7,
         value != "NA") %>% 
  #arrange(desc(time)) %>% 
  mutate(
    value      = round(value / 10^6, 3),
    processing = processing %>% str_remove_all("[:digit:]|\\-") %>% trimws(),
    time       = time %>% factor(levels = unique(time))
    ) %>% 
  spread(3,4)

# Table
IEXSITC %>% 
  select(-2) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = IEXSITC[[2]] %>% str_to_title() %>% table()) %>% 
  add_footnote(sdg9$figs$fig5$foot[language], notation = "symbol")
2018 2019 2020 2021 2022 2023 2024
Export
Machinery and transport equipment, total 530,455 315,276 326,187 182,999 179,201 260,847 76,197
Manufactured products mainlysemimanufactured products, total 13,285 5,699 13,193 8,149 16,420 20,536 11,039
Manufactured products, total 11,818 11,720 5,117 4,683 16,185 26,685 24,564
Mineral fuels and lubricants etc., total 0,002 0,004 0,079 0,002 0,004 0,017 0,141
Miscellaneous articles and transactions, total 124,994 108,924 91,546 74,050 9,617 19,494 4,548
Raw materials, inedible, total 4,605 7,882 6,824 7,135 11,907 11,294 13,291
* Billions (DKK)

Industry’s gross value added


FN 9.2.1 Industry’s gross value added
# Import
BVT <-
  statgl_url("NRX0418", lang = language) %>% 
  statgl_fetch(units    = "L",
               industry = px_all(),
               time     = px_all(),
               .col_code  = TRUE
               ) %>% 
    as_tibble() %>% 
  mutate(value = value/1000)


BVT <- BVT %>%  filter(industry %in% unique(BVT %>% pull(2))[9])


BNP <-
  statgl_url("NRX10", lang = language) %>% 
  statgl_fetch(
    units   = "L",
    account = "02",
    time    = px_all(),
    .col_code = TRUE
    ) %>% 
  as_tibble()

# Transform
industry <- 
  BVT %>% 
  rename("BVT" = 4) %>% 
  left_join(BNP %>% rename("BNP" = 4)) %>% 
  mutate(value = BVT / BNP,
         time = time %>% as.numeric())

# Plot
industry %>% 
  ggplot(aes(
    x     = time,
    y     = value,
    color = units
  )) +
  geom_line(size = 2) +
  scale_y_continuous(labels = scales:: percent) +
  theme_statgl() + 
  scale_color_statgl() +
  theme(legend.position = "none") +
  labs(
    title    = sdg9$figs$fig6$title[language],
    subtitle = industry[[1]][1],
    x        = " ",
    y        = sdg9$figs$fig6$y_lab[language],
    caption  = sdg9$figs$fig6$cap[language]
  )

Statbank, gross value added

Statbank, GDP per capita


tab <- 
  industry %>% 
  select(industry, time, value) %>% 
  mutate(
    industry = industry %>% str_remove_all("C "),
    value    = value * 100
    ) %>% 
  #arrange(desc(time)) %>% 
  filter(time >= max(time) - 5) %>% 
  mutate(time = time %>% as.character() %>%  fct_inorder()) %>% 
  mutate(value = value %>% round(2)) %>% 
  mutate(value = paste0(value, "%")) %>% 
  spread(time, value)

tab %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  add_footnote(sdg9$figs$fig6$foot[language], notation = "symbol")
2018 2019 2020 2021 2022 2023
Industry 0.29% 0.19% 0.16% 0.11% 0.23% 0.15%
* Share of GDP per capita

Industry employment


FN 9.2.2 Industry employment
# Import
NRX0518_raw <-
  statgl_url("NRX0518", lang = language) %>% 
  statgl_fetch(
    units    = "BES",
    industry = c("C", "TOT"),
    time     = px_all(),
    .col_code  = TRUE
    ) %>% 
    as_tibble()


NRX0518 <- 
  NRX0518_raw %>% 
  spread(industry, value) %>% 
  rename("indu" = 3, "total" = 4) %>% 
  mutate(
    value = indu / total,
    time = time %>% as.numeric()
    )



NRX0518 %>% 
  ggplot(aes(
    x = time,
    y = value,
    color = units
  )) +
  geom_line(size = 2) +
  expand_limits(y = 0) +
  scale_y_continuous(labels  = scales::percent_format(scale = 100, accuracy = 1, big.mark = ".",
  decimal.mark = ",")) +
  theme_statgl() + 
  scale_color_statgl() +
  theme(legend.position = "none") +
  labs(
    title = sdg9$figs$fig7$title[language],
    x = " ",
    y = sdg9$figs$fig7$y_lab[language],
    caption = sdg9$figs$fig7$cap[language]
  )

StatBank


NRX0518 %>% 
  select(time, value) %>% 
  #arrange(desc(time)) %>% 
  filter(time >= max(time) - 5) %>% 
  mutate(time = time %>% as.character() %>%  fct_inorder()) %>% 
  mutate(
    value = value * 100,
    value = value %>% round(1)
    ) %>% 
  spread(time, value) %>% 
  statgl_table() %>% 
  add_footnote(sdg9$figs$fig7$foot[language], notation = "symbol")
2018 2019 2020 2021 2022 2023
5,8 5,4 5,6 5,4 5,4 5,4
* Percentage of total employment