Ársreikningar sveitarfélaga

Hvernig eru ársreikningagögn sveitarfélaga undirbúin fyrir birtingu í mælaborði Metils um?

stjórnmál
efnahagur
ársreikningar
sveitarfélög
Author
Affiliation
Published

April 13, 2023

Code
library(tidyverse)
library(readxl)
library(janitor)
library(visitalaneysluverds)
library(hagstofa)
library(arrow)
library(googledrive)
library(googlesheets4)

Mannfjöldi

Code
url <- "https://px.hagstofa.is:443/pxis/api/v1/is/Ibuar/mannfjoldi/2_byggdir/sveitarfelog/MAN02005.px"
mannfjoldi <- hg_data(url) |> 
  filter(
    Aldur == "Alls",
    Kyn == "Alls",
    Sveitarfélag != "Alls"
  ) |> 
  collect() |> 
  clean_names() |> 
  rename(mannfjoldi = 5) |> 
  select(-aldur, -kyn) |> 
  mutate(ar = parse_number(ar))

Efnahagur

Code
efnahagur <- read_excel("net-efnahagsreikningar.xlsx", skip = 4) |> 
  clean_names() |> 
  fill(ar, sveitarfelag, hluti) |> 
  filter(
    tegund2 %in% c(
      "Veltufjármunir Total", 
      "Varanlegir rekstrarfjármunir", 
      "Áhættufjármunir og langtímakröfur",
      "Skuldbindingar", 
      "Langtímaskuldir",
      "Skammtímaskuldir", 
      "Eigið fé"
    ) | tegund %in% c(
      "Skammtímakröfur á eigin fyrirtæki",
      "Aðrir veltufjármunir"
    )
  ) |> 
  mutate(
    tegund2 = ifelse(is.na(tegund2), tegund, tegund2) |>
      str_replace(" Total", "")
  ) |> 
  select(-tegund) |> 
  mutate(
    ar = parse_number(ar),
    sveitarfelag = str_sub(sveitarfelag, start = 6)
  )

Rekstur

Code
rekstur <- read_excel("net-rekstrarreikningar.xlsx", skip = 5) |> 
  clean_names() |> 
  fill(ar, sveitarfelag, hluti) |> 
  filter(
    tegund2 %in% c(
      "Gjöld Total", 
      "Tekjur Total",
      "Rekstrarniðurstaða Total"
    ) | tegund %in% c(
      "Afskriftir", 
      "Breyting lífeyrisskuldbindinga",
      "Fjármagnsliðir",
      "Óreglulegir liðir",
      "Framlag Jöfnunarsjóðs", 
      "Skatttekjur án Jöfnunarsjóðs",
      "Laun og launatengd gjöld"
    )
  ) |> 
  mutate(
    tegund2 = ifelse(is.na(tegund2), tegund, tegund2) |> 
      str_replace(" Total", "")
  ) |> 
  select(-tegund) |> 
  mutate(
    ar = parse_number(ar),
    sveitarfelag = str_sub(sveitarfelag, start = 6)
  )

Sjóðsstreymi

Code
sjodsstreymi <- read_excel("net-sjodstreymi.xlsx", skip = 4) |> 
  clean_names() |> 
  fill(ar, sveitarfelag, hluti, tegund2) |> 
  mutate(
    ar = parse_number(ar),
    sveitarfelag = str_sub(sveitarfelag, start = 6)
  ) |> 
  filter(
    tegund2 %in% c(
      "Veltufé frá rekstri Total", 
      "Fjárfestingarhreyfingar Total") | 
      tegund %in% c(
        "Afborganir langtímalána",
        "Aðrar fjármögnunarhreyfingar",
        "Tekin ný langtímalán",
        "Fjárfesting í varanlegum rekstrarfjármunum"
      )
  ) |>
  mutate(
    tegund2 = ifelse(is.na(tegund), tegund2, tegund) |>
      str_replace(" Total", "")
  ) |> 
  select(-tegund) |> 
  mutate(
    total = coalesce(total, 0)
  )

Tenging

Code
d <- efnahagur |> 
  select(-tegund3) |> 
  pivot_wider(names_from = tegund2, values_from = total) |> 
  inner_join(
    rekstur |> 
      pivot_wider(names_from = tegund2, values_from = total),
    by = c("ar", "sveitarfelag", "hluti")
  ) |> 
  inner_join(
    sjodsstreymi |> 
      pivot_wider(names_from = tegund2, values_from = total),
    by = c("ar", "sveitarfelag", "hluti")
  ) |> 
  mutate_at(
    vars(-ar, -sveitarfelag, -hluti),
    coalesce, 0
  )
Code
d |> 
  skimr::skim()
Data summary
Name d
Number of rows 3074
Number of columns 28
_______________________
Column type frequency:
character 2
numeric 26
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
sveitarfelag 0 1 8 29 0 81 0
hluti 0 1 7 12 0 2 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
ar 0 1 2011.80 6.0 2002 2007.00 2012.0 2017.00 2022 ▇▆▆▆▆
Varanlegir rekstrarfjármunir 0 1 6979922.86 38207765.1 5116 288631.25 828232.0 3003434.50 777286753 ▇▁▁▁▁
Áhættufjármunir og langtímakröfur 0 1 866860.21 3125471.9 0 52849.50 137816.5 444522.00 36071319 ▇▁▁▁▁
Skammtímakröfur á eigin fyrirtæki 0 1 60827.04 181203.1 -303230 0.00 0.0 42727.75 3842587 ▇▁▁▁▁
Aðrir veltufjármunir 0 1 415304.38 1859983.0 0 21567.00 68442.0 185690.25 32992652 ▇▁▁▁▁
Veltufjármunir 0 1 1024043.90 4190330.9 5481 92999.50 204343.0 612781.00 83647325 ▇▁▁▁▁
Eigið fé 0 1 3578802.58 19949924.4 -1705566 245907.50 547618.5 1541712.00 423955128 ▇▁▁▁▁
Skuldbindingar 0 1 969607.66 3902422.6 0 0.00 59325.0 461501.75 64425813 ▇▁▁▁▁
Langtímaskuldir 0 1 3419319.72 18569470.8 0 63551.50 356598.5 1203402.00 318672356 ▇▁▁▁▁
Skammtímaskuldir 0 1 903097.08 3716030.4 205 44563.25 148725.0 419417.25 63279417 ▇▁▁▁▁
Skatttekjur án Jöfnunarsjóðs 0 1 2256710.78 8552213.6 7636 139961.00 376073.5 1173597.25 118591219 ▇▁▁▁▁
Framlag Jöfnunarsjóðs 0 1 374381.05 776538.4 0 65617.00 158242.0 350731.62 10608300 ▇▁▁▁▁
Tekjur 0 1 3612082.00 13856936.6 12600 272856.25 697090.0 2002404.25 223426232 ▇▁▁▁▁
Laun og launatengd gjöld 0 1 1769052.47 6657036.9 874 119626.50 341346.0 1038470.50 106354668 ▇▁▁▁▁
Breyting lífeyrisskuldbindinga 0 1 111323.46 598052.3 -1531587 0.00 4059.5 41598.75 14666288 ▇▁▁▁▁
Afskriftir 0 1 226047.49 1251172.5 0 11541.00 31914.0 95465.00 23515214 ▇▁▁▁▁
Gjöld 0 1 3406030.38 12957551.1 13862 267520.75 671245.5 1912136.25 208284956 ▇▁▁▁▁
Fjármagnsliðir 0 1 -197600.54 2138598.6 -99783794 -63849.00 -11052.5 2208.28 10505376 ▁▁▁▁▇
Óreglulegir liðir 0 1 53661.58 767339.8 -6171386 0.00 0.0 0.00 20174498 ▁▇▁▁▁
Rekstrarniðurstaða 0 1 62112.65 1826034.7 -71495906 -18528.50 9486.0 64070.00 28027176 ▁▁▁▇▁
Veltufé frá rekstri 0 1 419850.55 2153715.6 -2583086 13808.25 54884.0 213400.75 39602982 ▇▁▁▁▁
Fjárfesting í varanlegum rekstrarfjármunum 0 1 -544965.25 2805292.7 -50849042 -229539.00 -61410.5 -14637.50 1599022 ▁▁▁▁▇
Fjárfestingarhreyfingar 0 1 -405456.65 2478335.2 -48811242 -195496.40 -45418.0 -5200.25 29084625 ▁▁▁▇▁
Tekin ný langtímalán 0 1 410045.81 2191577.9 -170501 0.00 12943.5 142847.25 44594536 ▇▁▁▁▁
Afborganir langtímalána 0 1 -338703.62 1599787.1 -28501261 -149641.25 -44641.0 -7611.25 94019 ▁▁▁▁▇
Aðrar fjármögnunarhreyfingar 0 1 -40890.86 434026.4 -10357497 -18805.25 0.0 3013.00 2709554 ▁▁▁▇▁

Sameining sveitarfélaga

Code
mulathing <- c(
  "Múlaþing", 
  "Fljótsdalshérað", 
  "Seyðisfjarðarkaupstaður",
  "Borgarfjarðarhreppur",
  "Djúpavogshreppur"
)

sudurnesjabaer <- c(
  "Sandgerðisbær", 
  "Sveitarfélagið Garður"
)

fjardabyggd <- c(
  "Breiðdalshreppur",
  "Fjarðabyggð"
)

gardabaer <- c(
  "Sveitarfélagið Álftanes", 
  "Garðabær"
)

d <- d |> 
  mutate(
    sveitarfelag = case_match(
      sveitarfelag,
      mulathing ~ "Múlaþing",
      sudurnesjabaer ~ "Suðurnesjabær",
      fjardabyggd ~ "Fjarðabyggð",
      gardabaer ~ "Garðabær",
      sveitarfelag ~ sveitarfelag
    )
  )

Reikna breytur

Code
d <- d |> mutate(
  heildarskuldir = `Skuldbindingar` + `Langtímaskuldir` + `Skammtímaskuldir`,
  eignir = `Varanlegir rekstrarfjármunir` + `Áhættufjármunir og langtímakröfur` + `Veltufjármunir`
)

d
# A tibble: 3,074 × 30
      ar sveitarfelag        hluti Varanlegir rekstrarf…¹ Áhættufjármunir og l…²
   <dbl> <chr>               <chr>                  <dbl>                  <dbl>
 1  2022 Reykjavíkurborg     A_hl…             200279038.              24589047.
 2  2022 Reykjavíkurborg     A_og…             777286753.              21203607.
 3  2022 Kópavogsbær         A_hl…              54831077                5865042 
 4  2022 Kópavogsbær         A_og…              81524112                2674309 
 5  2022 Seltjarnarnesbær    A_hl…               6775005                2475607 
 6  2022 Seltjarnarnesbær    A_og…               8669016                1744887 
 7  2022 Garðabær            A_hl…              36530755                6797479 
 8  2022 Garðabær            A_og…              43500880                7483699 
 9  2022 Hafnarfjarðarkaups… A_hl…              47499673                6124462 
10  2022 Hafnarfjarðarkaups… A_og…              68615095                5241519 
# ℹ 3,064 more rows
# ℹ abbreviated names: ¹​`Varanlegir rekstrarfjármunir`,
#   ²​`Áhættufjármunir og langtímakröfur`
# ℹ 25 more variables: `Skammtímakröfur á eigin fyrirtæki` <dbl>,
#   `Aðrir veltufjármunir` <dbl>, Veltufjármunir <dbl>, `Eigið fé` <dbl>,
#   Skuldbindingar <dbl>, Langtímaskuldir <dbl>, Skammtímaskuldir <dbl>,
#   `Skatttekjur án Jöfnunarsjóðs` <dbl>, `Framlag Jöfnunarsjóðs` <dbl>, …
Code
d <- d |> 
  select(
    ar, 
    sveitarfelag,
    hluti,
    heildarskuldir,
    eignir,
    tekjur = "Tekjur", 
    skatttekjur_an_jofnundarsjods = "Skatttekjur án Jöfnunarsjóðs",
    framlag_jofnunarsjods = "Framlag Jöfnunarsjóðs",
    gjold = "Gjöld", 
    afskriftir = "Afskriftir",
    fjarmagnslidir = "Fjármagnsliðir", 
    oreglulegir_lidir = "Óreglulegir liðir",
    rekstrarnidurstada = "Rekstrarniðurstaða",
    breyting_lifeyrisskuldbindinga = "Breyting lífeyrisskuldbindinga",
    afborganir_langtimalana = "Afborganir langtímalána",
    tekin_ny_langtimalan = "Tekin ný langtímalán",
    adrar_fjarmognunarhreyfingar = "Aðrar fjármögnunarhreyfingar",
    ny_fjarfesting = "Fjárfesting í varanlegum rekstrarfjármunum",
    eigid_fe = "Eigið fé", 
    veltufjarmunir = "Veltufjármunir", 
    skammtimakrofur_eigin_fyrirtaeki = "Skammtímakröfur á eigin fyrirtæki",
    handbaert_fe = "Aðrir veltufjármunir",
    skammtimaskuldir = "Skammtímaskuldir", 
    fjarfestingarhreyfingar = "Fjárfestingarhreyfingar", 
    nyjar_langtimaskuldir = "Tekin ný langtímalán",
    launagjold = "Laun og launatengd gjöld",
    veltufe = "Veltufé frá rekstri"
  )
Code
d <- d |> 
  group_by(sveitarfelag, ar, hluti) |> 
  summarise_at(
    vars(heildarskuldir:veltufe), 
    ~ 1000 * sum(.x)
  ) |> 
  ungroup()
Code
d <- d |> 
  mutate(
    hluti = fct_recode(
      hluti,
      "A-hluti" = "A_hluti",
      "A og B-hluti" = "A_og_B_hluti"
    )
  )
Code
d <- d |> 
  inner_join(
    mannfjoldi,
    by = join_by(ar, sveitarfelag)
  )
Code
d <- d |>
  mutate(
    eiginfjarhlutfall = eigid_fe / eignir,
    framlegd = tekjur - gjold + afskriftir,
    framlegd_hlutf = framlegd / tekjur,
    handbaert_fe_per_ibui = handbaert_fe / mannfjoldi,
    heildarskuldir = heildarskuldir,
    launagjold_per_ibui = launagjold / mannfjoldi,
    launagjold_hlutf_gjold = launagjold / gjold,
    nettoskuldir = heildarskuldir - veltufjarmunir + skammtimakrofur_eigin_fyrirtaeki,
    nettoskuldir_hlutf_tekjur = nettoskuldir / tekjur,
    rekstrarnidurstada_hlutf = rekstrarnidurstada / tekjur,
    rekstur_3_ar = rekstrarnidurstada + lag(rekstrarnidurstada, 1) + lag(rekstrarnidurstada, 2),
    tekjur_3_ar = tekjur + lag(tekjur, 1) + lag(tekjur, 2),
    rekstur_3_ar_hlutf_tekjur = rekstur_3_ar / tekjur_3_ar,
    skattur_a_ibua = skatttekjur_an_jofnundarsjods / mannfjoldi,
    skuldahlutfall = 1 - eiginfjarhlutfall,
    skuldir_hlutf_tekjur = heildarskuldir / tekjur,
    skuldir_per_ibui = heildarskuldir / mannfjoldi,
    veltufe_hlutf_tekjur = veltufe / tekjur,
    veltufjarhlutfall = veltufjarmunir / skammtimaskuldir,
    veltufe_hlutf_afborganir = veltufe / afborganir_langtimalana,
    fjarf_nylan = tekin_ny_langtimalan - ny_fjarfesting,
    fjarfesting_hlutf_skuldir = fjarf_nylan / heildarskuldir,
    .by = c(sveitarfelag, hluti)
  )

d |> 
  write_parquet(
    "total_data.parquet"
  )

names(d)
 [1] "sveitarfelag"                     "ar"                              
 [3] "hluti"                            "heildarskuldir"                  
 [5] "eignir"                           "tekjur"                          
 [7] "skatttekjur_an_jofnundarsjods"    "framlag_jofnunarsjods"           
 [9] "gjold"                            "afskriftir"                      
[11] "fjarmagnslidir"                   "oreglulegir_lidir"               
[13] "rekstrarnidurstada"               "breyting_lifeyrisskuldbindinga"  
[15] "afborganir_langtimalana"          "tekin_ny_langtimalan"            
[17] "adrar_fjarmognunarhreyfingar"     "ny_fjarfesting"                  
[19] "eigid_fe"                         "veltufjarmunir"                  
[21] "skammtimakrofur_eigin_fyrirtaeki" "handbaert_fe"                    
[23] "skammtimaskuldir"                 "fjarfestingarhreyfingar"         
[25] "nyjar_langtimaskuldir"            "launagjold"                      
[27] "veltufe"                          "mannfjoldi"                      
[29] "eiginfjarhlutfall"                "framlegd"                        
[31] "framlegd_hlutf"                   "handbaert_fe_per_ibui"           
[33] "launagjold_per_ibui"              "launagjold_hlutf_gjold"          
[35] "nettoskuldir"                     "nettoskuldir_hlutf_tekjur"       
[37] "rekstrarnidurstada_hlutf"         "rekstur_3_ar"                    
[39] "tekjur_3_ar"                      "rekstur_3_ar_hlutf_tekjur"       
[41] "skattur_a_ibua"                   "skuldahlutfall"                  
[43] "skuldir_hlutf_tekjur"             "skuldir_per_ibui"                
[45] "veltufe_hlutf_tekjur"             "veltufjarhlutfall"               
[47] "veltufe_hlutf_afborganir"         "fjarf_nylan"                     
[49] "fjarfesting_hlutf_skuldir"       

Þróunargögn

Code
percent_vars <- c(
  "Eiginfjárhlutfall",
  "Framlegð sem hlutfall af tekjum",
  "Handbært fé á íbúa",
  "Launa- og launatengd gjöld sem hlutfall af útgjöldum",
  "Nettóskuldir sem hlutfall af tekjum",
  "Rekstrarniðurstaða sem hlutfall af tekjum",
  "Rekstrarniðurstaða undanfarinna 3 ára sem hlutfall af tekjum",
  "Skuldahlutfall",
  "Skuldir sem hlutfall af tekjum",
  "Veltufé frá rekstri sem hlutfall af tekjum",
  "Veltufjárhlutfall"
)

throun_data <- d |> 
  select(
    sveitarfelag,
    ar,
    hluti,
    "Heildarskuldir" = heildarskuldir,
    # "Eignir" = eignir,
    # "Tekjur" = tekjur,
    # "Rekstrarniðurstaða" = rekstrarnidurstada,
    "Eiginfjárhlutfall" = eiginfjarhlutfall,
    "Framlegð sem hlutfall af tekjum" = framlegd_hlutf,
    "Handbært fé á íbúa" = handbaert_fe_per_ibui,
    "Launa- og launatengd gjöld á íbúa" = launagjold_per_ibui,
    "Launa- og launatengd gjöld sem hlutfall af útgjöldum" = launagjold_hlutf_gjold,
    "Nettóskuldir sem hlutfall af tekjum" = nettoskuldir_hlutf_tekjur,
    "Rekstrarniðurstaða sem hlutfall af tekjum" = rekstrarnidurstada_hlutf,
    "Rekstrarniðurstaða undanfarinna 3 ára sem hlutfall af tekjum" = rekstur_3_ar_hlutf_tekjur,
    "Útsvar og fasteignaskattur á íbúa" = skattur_a_ibua,
    "Skuldahlutfall" = skuldahlutfall,
    "Skuldir sem hlutfall af tekjum" = skuldir_hlutf_tekjur,
    "Skuldir á íbúa" = skuldir_per_ibui,
    "Veltufé frá rekstri sem hlutfall af tekjum" = veltufe_hlutf_tekjur,
    "Veltufjárhlutfall" = veltufjarhlutfall
  ) |> 
  pivot_longer(
    c(-sveitarfelag, -ar, -hluti),
    names_to = "name",
    values_to = "y"
  ) |> 
  arrange(ar, hluti, sveitarfelag, name) |> 
  mutate(
    is_percent = ifelse(
      name %in% percent_vars,
      TRUE,
      FALSE
    )
  )

throun_data |> 
  write_parquet(
    "throun_data.parquet"
  )

Dreifingargögn

Code
percent_vars <- c(
  "Eiginfjárhlutfall",
  "Framlegð sem hlutfall af tekjum",
  "Handbært fé á íbúa",
  "Launa- og launatengd gjöld sem hlutfall af gjöldum",
  "Nettóskuldir sem hlutfall af tekjum",
  "Rekstrarniðurstaða sem hlutfall af tekjum",
  "Rekstrarniðurstaða undanfarinna 3 ára sem hlutfall af tekjum",
  "Skuldahlutfall",
  "Skuldir sem hlutfall af tekjum",
  "Veltufé frá rekstri sem hlutfall af tekjum",
  "Veltufjárhlutfall"
)

dreifing_data <- d |> 
  select(
    ar,
    sveitarfelag,
    hluti,
    # "Heildarskuldir" = heildarskuldir,
    # "Eignir" = eignir,
    # "Tekjur" = tekjur,
    # "Rekstrarniðurstaða" = rekstrarnidurstada,
    "Eiginfjárhlutfall" = eiginfjarhlutfall,
    "Framlegð sem hlutfall af tekjum" = framlegd_hlutf,
    "Handbært fé á íbúa" = handbaert_fe_per_ibui,
    "Launa- og launatengd gjöld á íbúa" = launagjold_per_ibui,
    "Launa- og launatengd gjöld sem hlutfall af gjöldum" = launagjold_hlutf_gjold,
    "Nettóskuldir sem hlutfall af tekjum" = nettoskuldir_hlutf_tekjur,
    "Rekstrarniðurstaða sem hlutfall af tekjum" = rekstrarnidurstada_hlutf,
    "Rekstrarniðurstaða undanfarinna 3 ára sem hlutfall af tekjum" = rekstur_3_ar_hlutf_tekjur,
    "Útsvar og fasteignaskattur á íbúa" = skattur_a_ibua,
    "Skuldahlutfall" = skuldahlutfall,
    "Skuldir sem hlutfall af tekjum" = skuldir_hlutf_tekjur,
    "Skuldir á íbúa" = skuldir_per_ibui,
    "Veltufé frá rekstri sem hlutfall af tekjum" = veltufe_hlutf_tekjur,
    "Veltufjárhlutfall" = veltufjarhlutfall
  ) |> 
  pivot_longer(
    c(-sveitarfelag, -ar, -hluti),
    names_to = "name",
    values_to = "y"
  ) |> 
  arrange(ar, hluti, sveitarfelag, name) |> 
  mutate(
    is_percent = ifelse(
      name %in% percent_vars,
      TRUE,
      FALSE
    )
  )

dreifing_data |> 
  write_parquet(
    "dreifing_data.parquet"
  )

dreifing_data
# A tibble: 35,644 × 6
      ar sveitarfelag      hluti   name                             y is_percent
   <dbl> <chr>             <fct>   <chr>                        <dbl> <lgl>     
 1  2002 Akraneskaupstaður A-hluti Eiginfjárhlutfall          5.82e-1 TRUE      
 2  2002 Akraneskaupstaður A-hluti Framlegð sem hlutfall af…  5.08e-2 TRUE      
 3  2002 Akraneskaupstaður A-hluti Handbært fé á íbúa         1.40e+4 TRUE      
 4  2002 Akraneskaupstaður A-hluti Launa- og launatengd gjö…  5.78e-1 TRUE      
 5  2002 Akraneskaupstaður A-hluti Launa- og launatengd gjö…  1.64e+5 FALSE     
 6  2002 Akraneskaupstaður A-hluti Nettóskuldir sem hlutfal…  1.12e+0 TRUE      
 7  2002 Akraneskaupstaður A-hluti Rekstrarniðurstaða sem h…  5.64e-2 TRUE      
 8  2002 Akraneskaupstaður A-hluti Rekstrarniðurstaða undan… NA       TRUE      
 9  2002 Akraneskaupstaður A-hluti Skuldahlutfall             4.18e-1 TRUE      
10  2002 Akraneskaupstaður A-hluti Skuldir sem hlutfall af …  1.29e+0 TRUE      
# ℹ 35,634 more rows

Viðmiðsgögn

Code
vidmid_data <- d |> 
  filter(
    ar >= 2010,
  ) |>
  select(
    sveitarfelag, 
    ar, 
    hluti,
    nettoskuldir_obs = nettoskuldir_hlutf_tekjur, 
    rekstrarnidurstada_obs = rekstur_3_ar_hlutf_tekjur, 
    framlegd_obs = framlegd_hlutf, 
    veltufe_obs = veltufe_hlutf_tekjur,
    veltufjarhlutfall_obs = veltufjarhlutfall
  ) |> 
  mutate(
    framlegd_vidmid = nettoskuldir_obs/10,
    veltufe_vidmid = nettoskuldir_obs/20,
    rekstrarnidurstada_vidmid = 0,
    veltufjarhlutfall_vidmid = 1,
    nettoskuldir_vidmid = 1
  ) |> 
  pivot_longer(c(-sveitarfelag, -ar, -hluti), names_to = c("name", "type"), values_to = "value", names_sep = "_") |> 
  pivot_wider(names_from = type, values_from  = value) |> 
  mutate(
    diff = obs - vidmid,
    colour = diff > 0
  ) 

vidmid_data |> 
  drop_na() |> 
  write_parquet(
    "vidmid_data.parquet"
  )

vidmid_data
# A tibble: 7,890 × 8
   sveitarfelag         ar hluti        name           obs vidmid    diff colour
   <chr>             <dbl> <fct>        <chr>        <dbl>  <dbl>   <dbl> <lgl> 
 1 Akraneskaupstaður  2010 A-hluti      nettoskul…  1.18   1       0.182  TRUE  
 2 Akraneskaupstaður  2010 A-hluti      rekstrarn… -0.0740 0      -0.0740 FALSE 
 3 Akraneskaupstaður  2010 A-hluti      framlegd    0.105  0.118  -0.0131 FALSE 
 4 Akraneskaupstaður  2010 A-hluti      veltufe     0.166  0.0591  0.106  TRUE  
 5 Akraneskaupstaður  2010 A-hluti      veltufjar…  1.42   1       0.420  TRUE  
 6 Akraneskaupstaður  2010 A og B-hluti nettoskul…  1.14   1       0.143  TRUE  
 7 Akraneskaupstaður  2010 A og B-hluti rekstrarn… -0.0693 0      -0.0693 FALSE 
 8 Akraneskaupstaður  2010 A og B-hluti framlegd    0.0971 0.114  -0.0173 FALSE 
 9 Akraneskaupstaður  2010 A og B-hluti veltufe     0.159  0.0572  0.102  TRUE  
10 Akraneskaupstaður  2010 A og B-hluti veltufjar…  1.50   1       0.497  TRUE  
# ℹ 7,880 more rows