Koľko stojí single život?

Práca s databázou Eurostat v prostredí R

Author

Anna Mária Čipová

Published

October 22, 2026

Koľko stojí single život?

Úvod

Tému Koľko stojí single život? som si vybrala preto, že ma zaujíma, ako sa líšia životné náklady človeka, ktorý žije sám, a ľudí, ktorí žijú v spoločnej domácnosti. Pri spoločnom bývaní sa niektoré výdavky rozdeľujú medzi viacerých členov domácnosti, no zároveň môže byť celková spotreba vyššia. Preto ma zaujíma, či je z finančného hľadiska výhodnejšie žiť samostatne alebo v dvojici a aký veľký je medzi nimi rozdiel.

Cieľom analýzy je porovnať priemerné spotrebné výdavky jednočlenných a dvojčlenných domácností, zistiť, koľko v priemere pripadá na jedného človeka, a sledovať, ako sa tieto rozdiely menili v priebehu rokov.

Na analýzu využijem databázu Household Budget Survey z Eurostatu, ktorá obsahuje údaje o priemerných spotrebných výdavkoch rôznych typov domácností v európskych krajinách. Dostupné údaje pokrývajú vybrané roky od 1988 do 2020. Výdavky sú vyjadrené v štandarde kúpnej sily (PPS), čo umožňuje porovnávať krajiny s rozdielnou cenovou úrovňou.

Výskumná otázka: Ako sa líšia spotrebné výdavky jednočlenných a dvojčlenných domácností v európskych krajinách a ako sa tento rozdiel menil v čase?

Načítanie a príprava dát

Zobraziť R kód
library(readxl)
Zobraziť R kód
library(readxl)

data <- read_excel(
  "household budget survey data.xlsx",
  sheet = "Data"
) 
New names:
• `` -> `...2`
• `` -> `...3`
• `` -> `...4`
• `` -> `...5`
• `` -> `...6`
• `` -> `...7`
• `` -> `...8`
Zobraziť R kód
dim(data)
[1] 518   8
Zobraziť R kód
names(data)
[1] "Data extracted on 21/10/2026 20:43:47 from [ESTAT]"
[2] "...2"                                              
[3] "...3"                                              
[4] "...4"                                              
[5] "...5"                                              
[6] "...6"                                              
[7] "...7"                                              
[8] "...8"                                              
Zobraziť R kód
head(data)
# A tibble: 6 × 8
  Data extracted on 21/10/2026 20:43…¹ ...2  ...3  ...4  ...5  ...6  ...7  ...8 
  <chr>                                <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 Dataset:                             Mean… <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
2 Last updated:                        15/1… <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
3 <NA>                                 <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
4 Time frequency                       <NA>  Annu… <NA>  <NA>  <NA>  <NA>  <NA> 
5 Household composition                <NA>  Total <NA>  <NA>  <NA>  <NA>  <NA> 
6 Unit of measure                      <NA>  Purc… <NA>  <NA>  <NA>  <NA>  <NA> 
# ℹ abbreviated name: ¹​`Data extracted on 21/10/2026 20:43:47 from [ESTAT]`
Zobraziť R kód
str(data)
tibble [518 × 8] (S3: tbl_df/tbl/data.frame)
 $ Data extracted on 21/10/2026 20:43:47 from [ESTAT]: chr [1:518] "Dataset:" "Last updated:" NA "Time frequency" ...
 $ ...2                                              : chr [1:518] "Mean consumption expenditure by type of household [hbs_exp_t134$defaultview]" "15/10/2025 23:00" NA NA ...
 $ ...3                                              : chr [1:518] NA NA NA "Annual" ...
 $ ...4                                              : chr [1:518] NA NA NA NA ...
 $ ...5                                              : chr [1:518] NA NA NA NA ...
 $ ...6                                              : chr [1:518] NA NA NA NA ...
 $ ...7                                              : chr [1:518] NA NA NA NA ...
 $ ...8                                              : chr [1:518] NA NA NA NA ...
Zobraziť R kód
data[1:20, ]
# A tibble: 20 × 8
   Data extracted on 21/10/2026 20:4…¹ ...2  ...3  ...4  ...5  ...6  ...7  ...8 
   <chr>                               <chr> <chr> <chr> <chr> <chr> <chr> <chr>
 1 Dataset:                            Mean… <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
 2 Last updated:                       15/1… <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
 3 <NA>                                <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
 4 Time frequency                      <NA>  Annu… <NA>  <NA>  <NA>  <NA>  <NA> 
 5 Household composition               <NA>  Total <NA>  <NA>  <NA>  <NA>  <NA> 
 6 Unit of measure                     <NA>  Purc… <NA>  <NA>  <NA>  <NA>  <NA> 
 7 <NA>                                <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
 8 TIME                                1988  1994  1999  2005  2010  2015  2020 
 9 GEO (Labels)                        <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
10 European Union - 27 countries (fro… :     :     :     :     :     1734… 1727…
11 European Union - 27 countries (200… :     :     :     1522… 1583… :     :    
12 European Union - 25 countries (200… :     :     :     1599… 1644… :     :    
13 European Union - 15 countries (199… :     1263… 1531… 1782… 1783… :     :    
14 Belgium                             1046… 1404… 1675… 1883… 2013… 2257… 2012…
15 Bulgaria                            :     :     :     4213… 5644… 7821… 8680…
16 Czechia                             :     :     :     6520… 8328… 9677… 1095…
17 Denmark                             :     1276… 1556… 1619… 1920… 2038… 2060…
18 Germany                             1085… 1334… 1555… 1895… 1923… 2099… 2207…
19 Estonia                             :     :     :     6531… 6755… 1057… 1178…
20 Ireland                             :     1124… 1560… 2058… 1895… 1955… 1932…
# ℹ abbreviated name: ¹​`Data extracted on 21/10/2026 20:43:47 from [ESTAT]`
Zobraziť R kód
which(data[[1]] == "TIME")
 [1]   8  60 112 164 216 268 320 372 424 476
Zobraziť R kód
data[c(5, 57, 109, 161, 213, 265, 317, 369, 421, 473), 1:3]
# A tibble: 10 × 3
   `Data extracted on 21/10/2026 20:43:47 from [ESTAT]` ...2  ...3              
   <chr>                                                <chr> <chr>             
 1 Household composition                                <NA>  Total             
 2 Household composition                                <NA>  Total             
 3 Household composition                                <NA>  One adult         
 4 Household composition                                <NA>  One adult         
 5 Household composition                                <NA>  One adult with de…
 6 Household composition                                <NA>  One adult with de…
 7 Household composition                                <NA>  Two adults        
 8 Household composition                                <NA>  Two adults        
 9 Household composition                                <NA>  Two adults with d…
10 Household composition                                <NA>  Two adults with d…
Zobraziť R kód
data[c(5, 57, 109, 161, 213, 265, 317, 369, 421, 473), 3]
# A tibble: 10 × 1
   ...3                              
   <chr>                             
 1 Total                             
 2 Total                             
 3 One adult                         
 4 One adult                         
 5 One adult with dependent children 
 6 One adult with dependent children 
 7 Two adults                        
 8 Two adults                        
 9 Two adults with dependent children
10 Two adults with dependent children
Zobraziť R kód
data[c(110, 162, 318, 370), 3]
# A tibble: 4 × 1
  ...3                                                
  <chr>                                               
1 Purchasing power standard (PPS) per adult equivalent
2 Purchasing power standard (PPS) per household       
3 Purchasing power standard (PPS) per adult equivalent
4 Purchasing power standard (PPS) per household       
Zobraziť R kód
data[164:175, ]
# A tibble: 12 × 8
   Data extracted on 21/10/2026 20:4…¹ ...2  ...3  ...4  ...5  ...6  ...7  ...8 
   <chr>                               <chr> <chr> <chr> <chr> <chr> <chr> <chr>
 1 TIME                                1988  1994  1999  2005  2010  2015  2020 
 2 GEO (Labels)                        <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
 3 European Union - 27 countries (fro… :     :     :     :     :     1734… 1745…
 4 European Union - 27 countries (200… :     :     :     1479… 1538… :     :    
 5 European Union - 25 countries (200… :     :     :     1557… 1598… :     :    
 6 European Union - 15 countries (199… :     1244… 1476… 1735… 1731… :     :    
 7 Belgium                             1103… 1949… 1644… 1934… 2021… 2260… 2194…
 8 Bulgaria                            :     :     2495… 4153… 5650… 8020… 8730…
 9 Czechia                             :     :     5364… 6401… 7617… 8965… 1041…
10 Denmark                             :     1184… 1403… 1517… 1767… 1940… 1933…
11 Germany                             1032… 1277… 1460… 1747… 1778… 1937… 2019…
12 Estonia                             :     :     4037… 5703… 6335… 1017… 1170…
# ℹ abbreviated name: ¹​`Data extracted on 21/10/2026 20:43:47 from [ESTAT]`
Zobraziť R kód
single <- data[166:199, ]
Zobraziť R kód
dim(single)
[1] 34  8
Zobraziť R kód
names(single) <- c("Krajina", "1988", "1994", "1999",
                   "2005", "2010", "2015", "2020")

names(single)
[1] "Krajina" "1988"    "1994"    "1999"    "2005"    "2010"    "2015"   
[8] "2020"   
Zobraziť R kód
pary <- data[374:407, ]

names(pary) <- c("Krajina", "1988", "1994", "1999",
                 "2005", "2010", "2015", "2020")

names(pary)
[1] "Krajina" "1988"    "1994"    "1999"    "2005"    "2010"    "2015"   
[8] "2020"   
Zobraziť R kód
dim(pary)
[1] 34  8
Zobraziť R kód
table(single$`2020`)

      : 10415.0 10683.0 11701.0 11738.0 13312.0 13633.0 14437.0 14765.0 15694.0 
      5       1       1       1       1       1       1       1       1       1 
16229.0 17453.0 18327.0 18660.0 18809.0 19335.0 19598.0 19846.0 20108.0 20191.0 
      1       1       1       1       1       1       1       1       1       1 
21942.0 22033.0 22964.0 24207.0 35200.0  8730.0  9068.0  9359.0  9389.0  9736.0 
      1       1       1       1       1       1       1       1       1       1 
Zobraziť R kód
single[, 2:8] <- lapply(single[, 2:8], function(x) {
  as.numeric(replace(x, x == ":", NA))
})
Zobraziť R kód
str(single)
tibble [34 × 8] (S3: tbl_df/tbl/data.frame)
 $ Krajina: chr [1:34] "European Union - 27 countries (from 2020)" "European Union - 27 countries (2007-2013)" "European Union - 25 countries (2004-2006)" "European Union - 15 countries (1995-2004)" ...
 $ 1988   : num [1:34] NA NA NA NA 11032 ...
 $ 1994   : num [1:34] NA NA NA 12442 19492 ...
 $ 1999   : num [1:34] NA NA NA 14767 16445 ...
 $ 2005   : num [1:34] NA 14798 15577 17355 19341 ...
 $ 2010   : num [1:34] NA 15381 15981 17316 20214 ...
 $ 2015   : num [1:34] 17343 NA NA NA 22600 ...
 $ 2020   : num [1:34] 17453 NA NA NA 21942 ...
Zobraziť R kód
pary[, 2:8] <- lapply(pary[, 2:8], function(x) {
  as.numeric(replace(x, x == ":", NA))
})

str(pary)
tibble [34 × 8] (S3: tbl_df/tbl/data.frame)
 $ Krajina: chr [1:34] "European Union - 27 countries (from 2020)" "European Union - 27 countries (2007-2013)" "European Union - 25 countries (2004-2006)" "European Union - 15 countries (1995-2004)" ...
 $ 1988   : num [1:34] NA NA NA NA 16586 ...
 $ 1994   : num [1:34] NA NA NA 20652 23230 ...
 $ 1999   : num [1:34] NA NA NA 24956 26664 ...
 $ 2005   : num [1:34] NA 24483 25771 28724 30451 ...
 $ 2010   : num [1:34] NA 25533 26571 28970 32722 ...
 $ 2015   : num [1:34] 28458 NA NA NA 37329 ...
 $ 2020   : num [1:34] 27998 NA NA NA 32016 ...
Zobraziť R kód
pary[, 2:8] <- lapply(pary[, 2:8], function(x) {
  x <- trimws(x)
  x[x == ":" | x == ""] <- NA
  as.numeric(x)
})

str(pary)
tibble [34 × 8] (S3: tbl_df/tbl/data.frame)
 $ Krajina: chr [1:34] "European Union - 27 countries (from 2020)" "European Union - 27 countries (2007-2013)" "European Union - 25 countries (2004-2006)" "European Union - 15 countries (1995-2004)" ...
 $ 1988   : num [1:34] NA NA NA NA 16586 ...
 $ 1994   : num [1:34] NA NA NA 20652 23230 ...
 $ 1999   : num [1:34] NA NA NA 24956 26664 ...
 $ 2005   : num [1:34] NA 24483 25771 28724 30451 ...
 $ 2010   : num [1:34] NA 25533 26571 28970 32722 ...
 $ 2015   : num [1:34] 28458 NA NA NA 37329 ...
 $ 2020   : num [1:34] 27998 NA NA NA 32016 ...
Zobraziť R kód
identical(single$Krajina, pary$Krajina)
[1] TRUE

Tradičná práca s databázou

Zobraziť R kód
# Prvých 6 záznamov
head(single)
# A tibble: 6 × 8
  Krajina                       `1988` `1994` `1999` `2005` `2010` `2015` `2020`
  <chr>                          <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
1 European Union - 27 countrie…     NA     NA     NA     NA     NA  17343  17453
2 European Union - 27 countrie…     NA     NA     NA  14798  15381     NA     NA
3 European Union - 25 countrie…     NA     NA     NA  15577  15981     NA     NA
4 European Union - 15 countrie…     NA  12442  14767  17355  17316     NA     NA
5 Belgium                        11032  19492  16445  19341  20214  22600  21942
6 Bulgaria                          NA     NA   2495   4153   5650   8020   8730
Zobraziť R kód
# Rozmery a názvy premenných
dim(single)
[1] 34  8
Zobraziť R kód
names(single)
[1] "Krajina" "1988"    "1994"    "1999"    "2005"    "2010"    "2015"   
[8] "2020"   
Zobraziť R kód
# Výber prvých troch krajín
single[1:3, ]
# A tibble: 3 × 8
  Krajina                       `1988` `1994` `1999` `2005` `2010` `2015` `2020`
  <chr>                          <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
1 European Union - 27 countrie…     NA     NA     NA     NA     NA  17343  17453
2 European Union - 27 countrie…     NA     NA     NA  14798  15381     NA     NA
3 European Union - 25 countrie…     NA     NA     NA  15577  15981     NA     NA
Zobraziť R kód
# Výber krajiny a výdavkov za rok 2020
single[, c("Krajina", "2020")]
# A tibble: 34 × 2
   Krajina                                   `2020`
   <chr>                                      <dbl>
 1 European Union - 27 countries (from 2020)  17453
 2 European Union - 27 countries (2007-2013)     NA
 3 European Union - 25 countries (2004-2006)     NA
 4 European Union - 15 countries (1995-2004)     NA
 5 Belgium                                    21942
 6 Bulgaria                                    8730
 7 Czechia                                    10415
 8 Denmark                                    19335
 9 Germany                                    20191
10 Estonia                                    11701
# ℹ 24 more rows
Zobraziť R kód
# Základná deskriptívna štatistika
summary(single)
      Krajina        1988            1994            1999            2005      
 Length   :34   Min.   : 8310   Min.   : 7198   Min.   : 1903   Min.   : 2596  
 N.unique :34   1st Qu.: 8908   1st Qu.: 9878   1st Qu.: 5267   1st Qu.: 6568  
 N.blank  : 0   Median : 9811   Median :12142   Median :11958   Median :14798  
 Min.nchar: 5   Mean   :10684   Mean   :12814   Mean   :11164   Mean   :13468  
 Max.nchar:41   3rd Qu.:11032   3rd Qu.:13311   3rd Qu.:14646   3rd Qu.:17416  
                Max.   :17477   Max.   :25546   Max.   :27374   Max.   :35071  
                NAs    :25      NAs    :18      NAs    :6       NAs    :3      
      2010            2015            2020      
 Min.   : 5650   Min.   : 7181   Min.   : 8730  
 1st Qu.: 9234   1st Qu.:10882   1st Qu.:11701  
 Median :15381   Median :15329   Median :16229  
 Mean   :14391   Mean   :16083   Mean   :16468  
 3rd Qu.:18040   3rd Qu.:19390   3rd Qu.:19846  
 Max.   :30759   Max.   :33724   Max.   :35200  
 NAs    :3       NAs    :3       NAs    :5      
Zobraziť R kód
# Priemerné výdavky v roku 2020
mean(single$`2020`, na.rm = TRUE)
[1] 16467.66

Práca s knižnicou dplyr

Zobraziť R kód
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
Zobraziť R kód
# Výber krajín s dostupnými údajmi za rok 2020
single %>%
  filter(!is.na(`2020`)) %>%
  select(Krajina, `2020`)
# A tibble: 29 × 2
   Krajina                                   `2020`
   <chr>                                      <dbl>
 1 European Union - 27 countries (from 2020)  17453
 2 Belgium                                    21942
 3 Bulgaria                                    8730
 4 Czechia                                    10415
 5 Denmark                                    19335
 6 Germany                                    20191
 7 Estonia                                    11701
 8 Ireland                                    19846
 9 Greece                                     14437
10 Spain                                      18660
# ℹ 19 more rows
Zobraziť R kód
# Zoradenie podľa výdavkov v roku 2020
single %>%
  filter(!is.na(`2020`)) %>%
  arrange(desc(`2020`)) %>%
  select(Krajina, `2020`)
# A tibble: 29 × 2
   Krajina     `2020`
   <chr>        <dbl>
 1 Luxembourg   35200
 2 Norway       24207
 3 Austria      22964
 4 Netherlands  22033
 5 Belgium      21942
 6 Germany      20191
 7 Italy        20108
 8 Ireland      19846
 9 Cyprus       19598
10 Denmark      19335
# ℹ 19 more rows
Zobraziť R kód
# Vytvorenie novej premennej
single %>%
  mutate(Vydavky_2020 = `2020`) %>%
  select(Krajina, Vydavky_2020)
# A tibble: 34 × 2
   Krajina                                   Vydavky_2020
   <chr>                                            <dbl>
 1 European Union - 27 countries (from 2020)        17453
 2 European Union - 27 countries (2007-2013)           NA
 3 European Union - 25 countries (2004-2006)           NA
 4 European Union - 15 countries (1995-2004)           NA
 5 Belgium                                          21942
 6 Bulgaria                                          8730
 7 Czechia                                          10415
 8 Denmark                                          19335
 9 Germany                                          20191
10 Estonia                                          11701
# ℹ 24 more rows
Zobraziť R kód
# Základná sumarizácia
single %>%
  summarise(
    Pocet_udajov = sum(!is.na(`2020`)),
    Priemer = mean(`2020`, na.rm = TRUE),
    Median = median(`2020`, na.rm = TRUE)
  )
# A tibble: 1 × 3
  Pocet_udajov Priemer Median
         <int>   <dbl>  <dbl>
1           29  16468.  16229

Grafické zobrazenie údajov

Zobraziť R kód
library(ggplot2)

# Údaje za rok 2020
graf_data <- single %>%
  filter(!is.na(`2020`))

# Bodový graf
ggplot(graf_data, aes(x = Krajina, y = `2020`)) +
  geom_point() +
  coord_flip() +
  theme_minimal() +
  labs(
    title = "Spotrebné výdavky jednočlenných domácností v roku 2020",
    x = "Krajina",
    y = "Výdavky (PPS na domácnosť)"
  )

Zobraziť R kód
# Boxplot výdavkov v roku 2020
ggplot(graf_data, aes(y = `2020`)) +
  geom_boxplot() +
  theme_minimal() +
  labs(
    title = "Rozdelenie výdavkov v roku 2020",
    y = "Výdavky (PPS na domácnosť)"
  )

Základné štatistiky

Zobraziť R kód
library(knitr)

statistiky <- single %>%
  summarise(
    Pocet = sum(!is.na(`2020`)),
    Priemer = mean(`2020`, na.rm = TRUE),
    SD = sd(`2020`, na.rm = TRUE),
    Minimum = min(`2020`, na.rm = TRUE),
    Median = median(`2020`, na.rm = TRUE),
    Maximum = max(`2020`, na.rm = TRUE)
  )

kable(
  statistiky,
  digits = 2,
  caption = "Základné štatistiky výdavkov za rok 2020"
)
Základné štatistiky výdavkov za rok 2020
Pocet Priemer SD Minimum Median Maximum
29 16467.66 5936.11 8730 16229 35200

Záver

V rámci cvičenia som pracovala s údajmi Eurostatu z databázy Household Budget Survey, ktorá obsahuje informácie o spotrebných výdavkoch domácností.

Precvičila som si import údajov do R, prácu s dátovými rámcami, výber a úpravu premenných, filtrovanie a triedenie údajov pomocou knižnice dplyr. Následne som využila knižnicu ggplot2 na grafické zobrazenie údajov a základné štatistické funkcie na vytvorenie súhrnnej tabuľky.

Cieľom tohto cvičenia bolo osvojiť si základné postupy práce s databázou v prostredí R.