Cvičenie 3 – Práca s databázou

Dátová analýza pre udržateľnú energetiku

Autor

Branislav Stríž

Publikované

19. októbra 2026

Kód
knitr::opts_chunk$set(
  echo = TRUE,
  warning = FALSE,
  message = FALSE
)

# 1. Vyhľadanie CSV databázy
# Funguje aj vtedy, keď má súbor za názvom (1), (2) a podobne.

priecinky <- unique(c(
  getwd(),
  ".",
  "..",
  file.path(path.expand("~"), "Downloads"),
  file.path(path.expand("~"), "Desktop"),
  file.path(path.expand("~"), "Documents")
))

subory <- unlist(lapply(priecinky, function(p) {
  if (dir.exists(p)) {
    list.files(
      p,
      pattern = "\\.csv$",
      full.names = TRUE,
      ignore.case = TRUE
    )
  } else {
    character(0)
  }
}), use.names = FALSE)

subory <- unique(subory)

kandidati <- subory[
  grepl(
    "global.data.on.sustainable.energy",
    basename(subory),
    ignore.case = TRUE
  )
]

# 2. Ak CSV nie je v počítači, pokúsime sa ho stiahnuť.

if (length(kandidati) > 0) {

  energia <- read.csv(
    kandidati[1],
    check.names = FALSE,
    stringsAsFactors = FALSE,
    na.strings = c("", "NA", "N/A")
  )

} else {

  adresy <- c(
    paste0(
      "https://raw.githubusercontent.com/",
      "AnshTanwar/Global-Data-on-Sustainable-Energy/",
      "main/global-data-on-sustainable-energy%20%281%29.csv"
    ),
    paste0(
      "https://raw.githubusercontent.com/",
      "anshtanwar/global-data-on-sustainable-energy/",
      "main/global-data-on-sustainable-energy.csv"
    )
  )

  energia <- NULL

  for (adresa in adresy) {

    pokus <- tryCatch(
      read.csv(
        adresa,
        check.names = FALSE,
        stringsAsFactors = FALSE,
        na.strings = c("", "NA", "N/A")
      ),
      error = function(e) NULL
    )

    if (!is.null(pokus) &&
        "Entity" %in% names(pokus) &&
        "Year" %in% names(pokus)) {
      energia <- pokus
      break
    }
  }

  if (is.null(energia)) {
    stop(
      "CSV databáza sa nenašla. ",
      "Vlož súbor global-data-on-sustainable-energy (1).csv ",
      "do rovnakého priečinka ako tento QMD súbor."
    )
  }

  write.csv(
    energia,
    "global-data-on-sustainable-energy.csv",
    row.names = FALSE
  )
}

# 3. Výber premenných

stlpce <- c(
  "Entity",
  "Year",
  "Electricity from renewables (TWh)",
  "Electricity from fossil fuels (TWh)",
  "Electricity from nuclear (TWh)",
  "Renewable energy share in the total final energy consumption (%)",
  "Value_co2_emissions_kt_by_country",
  "gdp_per_capita"
)

if (!all(stlpce %in% names(energia))) {
  stop("Načítaný CSV súbor nemá požadované stĺpce.")
}

energetika <- energia[, stlpce]

names(energetika) <- c(
  "Krajina",
  "Rok",
  "Obnovitelna",
  "Fosilna",
  "Jadrova",
  "Podiel",
  "EmisieCO2",
  "HDP"
)

# 4. Prevod premenných na čísla

for (p in names(energetika)[-1]) {
  energetika[[p]] <- suppressWarnings(
    as.numeric(as.character(energetika[[p]]))
  )
}

# 5. Zoradenie databázy

energetika <- energetika[
  order(energetika$Krajina, energetika$Rok),
]

rownames(energetika) <- NULL

# 6. Výber Slovenska

slovensko <- subset(
  energetika,
  Krajina == "Slovakia"
)

slovensko <- slovensko[
  order(slovensko$Rok),
]

udaje <- slovensko[
  complete.cases(
    slovensko[, c(
      "Rok",
      "Obnovitelna",
      "Fosilna",
      "Jadrova"
    )]
  ),
]

if (nrow(udaje) < 5) {
  stop("Nedostatok úplných údajov o Slovensku.")
}

cat(
  "Databáza úspešne načítaná:",
  nrow(energia),
  "riadkov a",
  ncol(energia),
  "stĺpcov."
)
Databáza úspešne načítaná: 3649 riadkov a 21 stĺpcov.

Úvod

V tomto dokumente sa venujem práci s databázami v programovacom jazyku R.

Pokračujem v téme Dátová analýza pre udržateľnú energetiku.

Na analýzu používam skutočnú databázu Global Data on Sustainable Energy (2000–2020) z platformy Kaggle.

Databáza obsahuje údaje o výrobe elektriny, obnoviteľných zdrojoch energie, emisiách CO₂ a ekonomických ukazovateľoch.

Zdroj: https://www.kaggle.com/datasets/anshtanwar/global-data-on-sustainable-energy

1. Práca s údajmi

Tradičná práca s databázou

V programovacom jazyku R sa na prácu s tabuľkovými údajmi používa dátový rámec data.frame.

Jednotlivé riadky predstavujú pozorovania a stĺpce predstavujú premenné.

Načítanie databázy

Kód
head(energia)
       Entity Year Access to electricity (% of population)
1 Afghanistan 2000                                1.613591
2 Afghanistan 2001                                4.074574
3 Afghanistan 2002                                9.409158
4 Afghanistan 2003                               14.738506
5 Afghanistan 2004                               20.064968
6 Afghanistan 2005                               25.390894
  Access to clean fuels for cooking
1                               6.2
2                               7.2
3                               8.2
4                               9.5
5                              10.9
6                              12.2
  Renewable-electricity-generating-capacity-per-capita
1                                                 9.22
2                                                 8.86
3                                                 8.47
4                                                 8.09
5                                                 7.75
6                                                 7.51
  Financial flows to developing countries (US $)
1                                          20000
2                                         130000
3                                        3950000
4                                       25970000
5                                             NA
6                                        9830000
  Renewable energy share in the total final energy consumption (%)
1                                                            44.99
2                                                            45.60
3                                                            37.83
4                                                            36.66
5                                                            44.24
6                                                            33.88
  Electricity from fossil fuels (TWh) Electricity from nuclear (TWh)
1                                0.16                              0
2                                0.09                              0
3                                0.13                              0
4                                0.31                              0
5                                0.33                              0
6                                0.34                              0
  Electricity from renewables (TWh) Low-carbon electricity (% electricity)
1                              0.31                               65.95744
2                              0.50                               84.74577
3                              0.56                               81.15942
4                              0.63                               67.02128
5                              0.56                               62.92135
6                              0.59                               63.44086
  Primary energy consumption per capita (kWh/person)
1                                           302.5948
2                                           236.8919
3                                           210.8622
4                                           229.9682
5                                           204.2312
6                                           252.0691
  Energy intensity level of primary energy (MJ/$2017 PPP GDP)
1                                                        1.64
2                                                        1.74
3                                                        1.40
4                                                        1.40
5                                                        1.20
6                                                        1.41
  Value_co2_emissions_kt_by_country Renewables (% equivalent primary energy)
1                               760                                       NA
2                               730                                       NA
3                              1030                                       NA
4                              1220                                       NA
5                              1030                                       NA
6                              1550                                       NA
  gdp_growth gdp_per_capita Density\\n(P/Km2) Land Area(Km2) Latitude Longitude
1         NA             NA                60         652230 33.93911  67.70995
2         NA             NA                60         652230 33.93911  67.70995
3         NA       179.4266                60         652230 33.93911  67.70995
4   8.832278       190.6838                60         652230 33.93911  67.70995
5   1.414118       211.3821                60         652230 33.93911  67.70995
6  11.229715       242.0313                60         652230 33.93911  67.70995

Rozmery databázy

Kód
dim(energia)
[1] 3649   21

Názvy premenných

Kód
names(energia)
 [1] "Entity"                                                          
 [2] "Year"                                                            
 [3] "Access to electricity (% of population)"                         
 [4] "Access to clean fuels for cooking"                               
 [5] "Renewable-electricity-generating-capacity-per-capita"            
 [6] "Financial flows to developing countries (US $)"                  
 [7] "Renewable energy share in the total final energy consumption (%)"
 [8] "Electricity from fossil fuels (TWh)"                             
 [9] "Electricity from nuclear (TWh)"                                  
[10] "Electricity from renewables (TWh)"                               
[11] "Low-carbon electricity (% electricity)"                          
[12] "Primary energy consumption per capita (kWh/person)"              
[13] "Energy intensity level of primary energy (MJ/$2017 PPP GDP)"     
[14] "Value_co2_emissions_kt_by_country"                               
[15] "Renewables (% equivalent primary energy)"                        
[16] "gdp_growth"                                                      
[17] "gdp_per_capita"                                                  
[18] "Density\\n(P/Km2)"                                               
[19] "Land Area(Km2)"                                                  
[20] "Latitude"                                                        
[21] "Longitude"                                                       

Štruktúra databázy

Kód
str(energetika)
'data.frame':   3649 obs. of  8 variables:
 $ Krajina    : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
 $ Rok        : num  2000 2001 2002 2003 2004 ...
 $ Obnovitelna: num  0.31 0.5 0.56 0.63 0.56 0.59 0.64 0.75 0.54 0.78 ...
 $ Fosilna    : num  0.16 0.09 0.13 0.31 0.33 0.34 0.2 0.2 0.19 0.16 ...
 $ Jadrova    : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Podiel     : num  45 45.6 37.8 36.7 44.2 ...
 $ EmisieCO2  : num  760 730 1030 1220 1030 ...
 $ HDP        : num  NA NA 179 191 211 ...

Základný štatistický prehľad

Kód
summary(energetika)
      Krajina          Rok        Obnovitelna         Fosilna       
 Length   :3649   Min.   :2000   Min.   :   0.00   Min.   :   0.00  
 N.unique : 176   1st Qu.:2005   1st Qu.:   0.04   1st Qu.:   0.29  
 N.blank  :   0   Median :2010   Median :   1.47   Median :   2.97  
 Min.nchar:   4   Mean   :2010   Mean   :  23.97   Mean   :  70.36  
 Max.nchar:  32   3rd Qu.:2015   3rd Qu.:   9.60   3rd Qu.:  26.84  
                  Max.   :2020   Max.   :2184.94   Max.   :5184.13  
                                 NAs    :21        NAs    :21       
    Jadrova           Podiel         EmisieCO2             HDP          
 Min.   :  0.00   Min.   : 0.000   Min.   :      10   Min.   :   111.9  
 1st Qu.:  0.00   1st Qu.: 6.515   1st Qu.:    2020   1st Qu.:  1337.8  
 Median :  0.00   Median :23.300   Median :   10500   Median :  4578.6  
 Mean   : 13.45   Mean   :32.638   Mean   :  159866   Mean   : 13283.8  
 3rd Qu.:  0.00   3rd Qu.:55.245   3rd Qu.:   60580   3rd Qu.: 15768.6  
 Max.   :809.41   Max.   :96.040   Max.   :10707220   Max.   :123514.2  
 NAs    :126      NAs    :194      NAs    :428        NAs    :282       

2. Vytvorenie vlastného dátového rámca

Databáza Slovenska

Z pôvodnej databázy vytvorím menší dátový rámec obsahujúci historické údaje o výrobe elektriny na Slovensku.

Kód
vyroba <- udaje[, c(
  "Rok",
  "Obnovitelna",
  "Fosilna",
  "Jadrova"
)]

head(vyroba)
      Rok Obnovitelna Fosilna Jadrova
2991 2000        4.61    9.68   16.49
2992 2001        5.08    9.65   17.10
2993 2002        5.42    8.81   17.95
2994 2003        3.58    9.52   17.86
2995 2004        4.13    9.29   17.03
2996 2005        4.68    8.93   17.73

Výber údajov

Kód
vyroba$Obnovitelna
 [1] 4.61 5.08 5.42 3.58 4.13 4.68 4.81 4.93 4.57 4.92 5.95 5.00 5.47 6.36 6.24
[16] 6.05 6.63 6.54 5.81 6.65 6.85

Priemerná výroba

Kód
mean(vyroba$Obnovitelna)
[1] 5.441905

Výber tretieho riadku

Kód
vyroba[3, ]
      Rok Obnovitelna Fosilna Jadrova
2993 2002        5.42    8.81   17.95

Výber druhého a tretieho stĺpca

Kód
vyroba[, 2:3]
     Obnovitelna Fosilna
2991        4.61    9.68
2992        5.08    9.65
2993        5.42    8.81
2994        3.58    9.52
2995        4.13    9.29
2996        4.68    8.93
2997        4.81    8.39
2998        4.93    7.57
2999        4.57    7.46
3000        4.92    6.89
3001        5.95    6.90
3002        5.00    7.80
3003        5.47    7.28
3004        6.36    6.36
3005        6.24    5.30
3006        6.05    5.34
3007        6.63    5.28
3008        6.54    5.67
3009        5.81    5.92
3010        6.65    6.26
3011        6.85    6.22

Výber konkrétnej bunky

Kód
vyroba[1, 2]
[1] 4.61

Štatistický prehľad

Kód
summary(vyroba)
      Rok        Obnovitelna       Fosilna         Jadrova     
 Min.   :2000   Min.   :3.580   Min.   :5.280   Min.   :14.08  
 1st Qu.:2005   1st Qu.:4.810   1st Qu.:6.220   1st Qu.:15.15  
 Median :2010   Median :5.420   Median :7.280   Median :15.49  
 Mean   :2010   Mean   :5.442   Mean   :7.358   Mean   :15.98  
 3rd Qu.:2015   3rd Qu.:6.240   3rd Qu.:8.810   3rd Qu.:17.03  
 Max.   :2020   Max.   :6.850   Max.   :9.680   Max.   :18.01  

Pridanie nového stĺpca

Vytvorím premennú označujúcu roky s nadpriemernou výrobou obnoviteľnej elektriny.

Kód
vyroba$NadPriemerom <-
  vyroba$Obnovitelna >
  mean(vyroba$Obnovitelna)

head(vyroba)
      Rok Obnovitelna Fosilna Jadrova NadPriemerom
2991 2000        4.61    9.68   16.49        FALSE
2992 2001        5.08    9.65   17.10        FALSE
2993 2002        5.42    8.81   17.95        FALSE
2994 2003        3.58    9.52   17.86        FALSE
2995 2004        4.13    9.29   17.03        FALSE
2996 2005        4.68    8.93   17.73        FALSE

Pridanie nového riadku

Na ukážku pridám do kópie databázy prázdny riadok, ktorý nepredstavuje skutočné pozorovanie.

Kód
ukazka <- rbind(
  vyroba,
  data.frame(
    Rok = NA,
    Obnovitelna = NA,
    Fosilna = NA,
    Jadrova = NA,
    NadPriemerom = NA
  )
)

tail(ukazka)
      Rok Obnovitelna Fosilna Jadrova NadPriemerom
3007 2016        6.63    5.28   14.77         TRUE
3008 2017        6.54    5.67   15.08         TRUE
3009 2018        5.81    5.92   14.84         TRUE
3010 2019        6.65    6.26   15.28         TRUE
3011 2020        6.85    6.22   15.44         TRUE
1      NA          NA      NA      NA           NA

Tabuľka pomocou knitr

Kód
knitr::kable(
  head(vyroba, 10),
  digits = 2,
  caption = "Výroba elektriny na Slovensku v TWh"
)
Výroba elektriny na Slovensku v TWh
Rok Obnovitelna Fosilna Jadrova NadPriemerom
2991 2000 4.61 9.68 16.49 FALSE
2992 2001 5.08 9.65 17.10 FALSE
2993 2002 5.42 8.81 17.95 FALSE
2994 2003 3.58 9.52 17.86 FALSE
2995 2004 4.13 9.29 17.03 FALSE
2996 2005 4.68 8.93 17.73 FALSE
2997 2006 4.81 8.39 18.01 FALSE
2998 2007 4.93 7.57 15.33 FALSE
2999 2008 4.57 7.46 16.70 FALSE
3000 2009 4.92 6.89 14.08 FALSE

3. Manipulácia s údajmi

Filtrovanie

Vyberiem roky s nadpriemernou výrobou obnoviteľnej elektriny.

Kód
priemer <- mean(vyroba$Obnovitelna)

vybrane <- subset(
  vyroba,
  Obnovitelna > priemer
)

vybrane
      Rok Obnovitelna Fosilna Jadrova NadPriemerom
3001 2010        5.95    6.90   14.57         TRUE
3003 2012        5.47    7.28   15.49         TRUE
3004 2013        6.36    6.36   15.72         TRUE
3005 2014        6.24    5.30   15.50         TRUE
3006 2015        6.05    5.34   15.15         TRUE
3007 2016        6.63    5.28   14.77         TRUE
3008 2017        6.54    5.67   15.08         TRUE
3009 2018        5.81    5.92   14.84         TRUE
3010 2019        6.65    6.26   15.28         TRUE
3011 2020        6.85    6.22   15.44         TRUE

Triedenie

Kód
zoradene <- vybrane[
  order(
    vybrane$Obnovitelna,
    decreasing = TRUE
  ),
]

zoradene
      Rok Obnovitelna Fosilna Jadrova NadPriemerom
3011 2020        6.85    6.22   15.44         TRUE
3010 2019        6.65    6.26   15.28         TRUE
3007 2016        6.63    5.28   14.77         TRUE
3008 2017        6.54    5.67   15.08         TRUE
3004 2013        6.36    6.36   15.72         TRUE
3005 2014        6.24    5.30   15.50         TRUE
3006 2015        6.05    5.34   15.15         TRUE
3001 2010        5.95    6.90   14.57         TRUE
3009 2018        5.81    5.92   14.84         TRUE
3003 2012        5.47    7.28   15.49         TRUE

Výber stĺpcov

Kód
vyroba[, c("Rok", "Obnovitelna")]
      Rok Obnovitelna
2991 2000        4.61
2992 2001        5.08
2993 2002        5.42
2994 2003        3.58
2995 2004        4.13
2996 2005        4.68
2997 2006        4.81
2998 2007        4.93
2999 2008        4.57
3000 2009        4.92
3001 2010        5.95
3002 2011        5.00
3003 2012        5.47
3004 2013        6.36
3005 2014        6.24
3006 2015        6.05
3007 2016        6.63
3008 2017        6.54
3009 2018        5.81
3010 2019        6.65
3011 2020        6.85

Zoskupenie podľa obdobia

Kód
vyroba$Obdobie <- ifelse(
  vyroba$Rok <= median(vyroba$Rok),
  "Staršie",
  "Novšie"
)

table(vyroba$Obdobie)

 Novšie Staršie 
     10      11 

Priemerná výroba podľa obdobia

Kód
aggregate(
  Obnovitelna ~ Obdobie,
  data = vyroba,
  FUN = mean
)
  Obdobie Obnovitelna
1  Novšie    6.160000
2 Staršie    4.789091

Vytvorenie novej premennej

Vypočítam celkovú výrobu elektriny zo sledovaných zdrojov.

Kód
vyroba$CelkovaVyroba <-
  vyroba$Obnovitelna +
  vyroba$Fosilna +
  vyroba$Jadrova

head(vyroba)
      Rok Obnovitelna Fosilna Jadrova NadPriemerom Obdobie CelkovaVyroba
2991 2000        4.61    9.68   16.49        FALSE Staršie         30.78
2992 2001        5.08    9.65   17.10        FALSE Staršie         31.83
2993 2002        5.42    8.81   17.95        FALSE Staršie         32.18
2994 2003        3.58    9.52   17.86        FALSE Staršie         30.96
2995 2004        4.13    9.29   17.03        FALSE Staršie         30.45
2996 2005        4.68    8.93   17.73        FALSE Staršie         31.34

Podiel obnoviteľnej elektriny

Kód
vyroba$PodielObnovitelnej <- ifelse(
  vyroba$CelkovaVyroba > 0,
  100 * vyroba$Obnovitelna /
    vyroba$CelkovaVyroba,
  NA_real_
)

head(vyroba)
      Rok Obnovitelna Fosilna Jadrova NadPriemerom Obdobie CelkovaVyroba
2991 2000        4.61    9.68   16.49        FALSE Staršie         30.78
2992 2001        5.08    9.65   17.10        FALSE Staršie         31.83
2993 2002        5.42    8.81   17.95        FALSE Staršie         32.18
2994 2003        3.58    9.52   17.86        FALSE Staršie         30.96
2995 2004        4.13    9.29   17.03        FALSE Staršie         30.45
2996 2005        4.68    8.93   17.73        FALSE Staršie         31.34
     PodielObnovitelnej
2991           14.97726
2992           15.95979
2993           16.84276
2994           11.56331
2995           13.56322
2996           14.93299

4. Databáza energetiky v čase

Historický vývoj

Kód
knitr::kable(
  vyroba[, c(
    "Rok",
    "Obnovitelna",
    "Fosilna",
    "Jadrova"
  )],
  digits = 2,
  caption = "Historický vývoj výroby elektriny na Slovensku"
)
Historický vývoj výroby elektriny na Slovensku
Rok Obnovitelna Fosilna Jadrova
2991 2000 4.61 9.68 16.49
2992 2001 5.08 9.65 17.10
2993 2002 5.42 8.81 17.95
2994 2003 3.58 9.52 17.86
2995 2004 4.13 9.29 17.03
2996 2005 4.68 8.93 17.73
2997 2006 4.81 8.39 18.01
2998 2007 4.93 7.57 15.33
2999 2008 4.57 7.46 16.70
3000 2009 4.92 6.89 14.08
3001 2010 5.95 6.90 14.57
3002 2011 5.00 7.80 15.41
3003 2012 5.47 7.28 15.49
3004 2013 6.36 6.36 15.72
3005 2014 6.24 5.30 15.50
3006 2015 6.05 5.34 15.15
3007 2016 6.63 5.28 14.77
3008 2017 6.54 5.67 15.08
3009 2018 5.81 5.92 14.84
3010 2019 6.65 6.26 15.28
3011 2020 6.85 6.22 15.44

Priemerná výroba elektriny

Kód
mean(vyroba$Obnovitelna)
[1] 5.441905
Kód
mean(vyroba$Fosilna)
[1] 7.358095
Kód
mean(vyroba$Jadrova)
[1] 15.97762

Štandardná odchýlka

Kód
sd(vyroba$Obnovitelna)
[1] 0.9160984
Kód
sd(vyroba$Fosilna)
[1] 1.523508
Kód
sd(vyroba$Jadrova)
[1] 1.217821

Minimum a maximum

Kód
min(vyroba$Obnovitelna)
[1] 3.58
Kód
max(vyroba$Obnovitelna)
[1] 6.85

Výber rokov od roku 2010

Kód
subset(
  vyroba,
  Rok >= 2010
)
      Rok Obnovitelna Fosilna Jadrova NadPriemerom Obdobie CelkovaVyroba
3001 2010        5.95    6.90   14.57         TRUE Staršie         27.42
3002 2011        5.00    7.80   15.41        FALSE  Novšie         28.21
3003 2012        5.47    7.28   15.49         TRUE  Novšie         28.24
3004 2013        6.36    6.36   15.72         TRUE  Novšie         28.44
3005 2014        6.24    5.30   15.50         TRUE  Novšie         27.04
3006 2015        6.05    5.34   15.15         TRUE  Novšie         26.54
3007 2016        6.63    5.28   14.77         TRUE  Novšie         26.68
3008 2017        6.54    5.67   15.08         TRUE  Novšie         27.29
3009 2018        5.81    5.92   14.84         TRUE  Novšie         26.57
3010 2019        6.65    6.26   15.28         TRUE  Novšie         28.19
3011 2020        6.85    6.22   15.44         TRUE  Novšie         28.51
     PodielObnovitelnej
3001           21.69949
3002           17.72421
3003           19.36969
3004           22.36287
3005           23.07692
3006           22.79578
3007           24.85007
3008           23.96482
3009           21.86677
3010           23.58993
3011           24.02666

5. Import a kontrola CSV databázy

Kontrola rozmerov

Kód
dim(energia)
[1] 3649   21

Kontrola názvov stĺpcov

Kód
colnames(energia)
 [1] "Entity"                                                          
 [2] "Year"                                                            
 [3] "Access to electricity (% of population)"                         
 [4] "Access to clean fuels for cooking"                               
 [5] "Renewable-electricity-generating-capacity-per-capita"            
 [6] "Financial flows to developing countries (US $)"                  
 [7] "Renewable energy share in the total final energy consumption (%)"
 [8] "Electricity from fossil fuels (TWh)"                             
 [9] "Electricity from nuclear (TWh)"                                  
[10] "Electricity from renewables (TWh)"                               
[11] "Low-carbon electricity (% electricity)"                          
[12] "Primary energy consumption per capita (kWh/person)"              
[13] "Energy intensity level of primary energy (MJ/$2017 PPP GDP)"     
[14] "Value_co2_emissions_kt_by_country"                               
[15] "Renewables (% equivalent primary energy)"                        
[16] "gdp_growth"                                                      
[17] "gdp_per_capita"                                                  
[18] "Density\\n(P/Km2)"                                               
[19] "Land Area(Km2)"                                                  
[20] "Latitude"                                                        
[21] "Longitude"                                                       

Kontrola chýbajúcich hodnôt

Kód
colSums(is.na(energetika))
    Krajina         Rok Obnovitelna     Fosilna     Jadrova      Podiel 
          0           0          21          21         126         194 
  EmisieCO2         HDP 
        428         282 

Celkový počet chýbajúcich hodnôt

Kód
sum(is.na(energetika))
[1] 1072

Kontrola duplicít

Kód
sum(duplicated(energetika))
[1] 0

Odstránenie duplicít

Kód
energetika_cista <- unique(energetika)

dim(energetika_cista)
[1] 3649    8

Výber environmentálnych údajov

Kód
environment <- energetika_cista[, c(
  "Krajina",
  "Rok",
  "Podiel",
  "EmisieCO2",
  "HDP"
)]

head(environment)
      Krajina  Rok Podiel EmisieCO2      HDP
1 Afghanistan 2000  44.99       760       NA
2 Afghanistan 2001  45.60       730       NA
3 Afghanistan 2002  37.83      1030 179.4266
4 Afghanistan 2003  36.66      1220 190.6838
5 Afghanistan 2004  44.24      1030 211.3821
6 Afghanistan 2005  33.88      1550 242.0313

Filtrovanie podľa rokov

Kód
energia_2010_2020 <- subset(
  energetika_cista,
  Rok >= 2010 & Rok <= 2020
)

head(energia_2010_2020)
       Krajina  Rok Obnovitelna Fosilna Jadrova Podiel EmisieCO2      HDP
11 Afghanistan 2010        0.75    0.19       0  15.15      7110 543.3065
12 Afghanistan 2011        0.60    0.18       0  12.61      8930 591.1900
13 Afghanistan 2012        0.74    0.14       0  15.36      8080 638.8459
14 Afghanistan 2013        0.89    0.22       0  16.86      5990 624.3155
15 Afghanistan 2014        1.00    0.16       0  18.93      4880 614.2233
16 Afghanistan 2015        1.03    0.15       0  17.53      5950 556.0072

Priemerný podiel obnoviteľnej energie

Kód
vyvoj_podielu <- aggregate(
  Podiel ~ Rok,
  data = energetika_cista,
  FUN = mean
)

head(vyvoj_podielu)
   Rok   Podiel
1 2000 34.48907
2 2001 34.09082
3 2002 33.99953
4 2003 33.63345
5 2004 33.45819
6 2005 33.38105

6. Grafické zobrazenie údajov

Vývoj obnoviteľnej elektriny

Kód
plot(
  vyroba$Rok,
  vyroba$Obnovitelna,
  type = "b",
  pch = 19,
  col = "darkgreen",
  xlab = "Rok",
  ylab = "Výroba (TWh)",
  main = "Vývoj obnoviteľnej elektriny na Slovensku"
)

Porovnanie zdrojov elektriny

Kód
matplot(
  vyroba$Rok,
  vyroba[, c(
    "Obnovitelna",
    "Fosilna",
    "Jadrova"
  )],
  type = "b",
  pch = 19,
  lty = 1,
  col = c(
    "darkgreen",
    "darkorange",
    "steelblue"
  ),
  xlab = "Rok",
  ylab = "Výroba (TWh)",
  main = "Porovnanie výroby elektriny na Slovensku"
)

legend(
  "topleft",
  legend = c(
    "Obnoviteľná",
    "Fosílna",
    "Jadrová"
  ),
  col = c(
    "darkgreen",
    "darkorange",
    "steelblue"
  ),
  lty = 1,
  pch = 19,
  bty = "n"
)

Bodový graf

Kód
plot(
  vyroba$Fosilna,
  vyroba$Obnovitelna,
  pch = 19,
  col = "darkblue",
  xlab = "Fosílna elektrina (TWh)",
  ylab = "Obnoviteľná elektrina (TWh)",
  main = "Vzťah fosílnej a obnoviteľnej elektriny"
)

Boxplot

Kód
boxplot(
  Obnovitelna ~ Obdobie,
  data = vyroba,
  col = "lightgreen",
  xlab = "Obdobie",
  ylab = "Výroba (TWh)",
  main = "Výroba obnoviteľnej elektriny podľa obdobia"
)

Vývoj podielu obnoviteľnej energie

Kód
plot(
  vyvoj_podielu$Rok,
  vyvoj_podielu$Podiel,
  type = "b",
  pch = 19,
  col = "darkgreen",
  xlab = "Rok",
  ylab = "Podiel (%)",
  main = "Priemerný podiel obnoviteľnej energie"
)

7. Základné štatistiky

Štatistiky výroby elektriny

Kód
zdroje <- vyroba[, c(
  "Obnovitelna",
  "Fosilna",
  "Jadrova"
)]

statistiky <- data.frame(
  Zdroj = c(
    "Obnoviteľná",
    "Fosílna",
    "Jadrová"
  ),
  Priemer = sapply(zdroje, mean),
  SD = sapply(zdroje, sd),
  Minimum = sapply(zdroje, min),
  Maximum = sapply(zdroje, max)
)

rownames(statistiky) <- NULL

knitr::kable(
  statistiky,
  digits = 3,
  caption = "Základné štatistiky výroby elektriny"
)
Základné štatistiky výroby elektriny
Zdroj Priemer SD Minimum Maximum
Obnoviteľná 5.442 0.916 3.58 6.85
Fosílna 7.358 1.524 5.28 9.68
Jadrová 15.978 1.218 14.08 18.01

Štatistiky podielu obnoviteľnej energie podľa rokov

Kód
roky <- sort(unique(energetika_cista$Rok))

statistiky_roky <- data.frame(
  Rok = roky,
  Pocet = sapply(roky, function(r) {
    sum(
      energetika_cista$Rok == r &
      !is.na(energetika_cista$Podiel)
    )
  }),
  Priemer = sapply(roky, function(r) {
    mean(
      energetika_cista$Podiel[
        energetika_cista$Rok == r
      ],
      na.rm = TRUE
    )
  }),
  Median = sapply(roky, function(r) {
    median(
      energetika_cista$Podiel[
        energetika_cista$Rok == r
      ],
      na.rm = TRUE
    )
  })
)

knitr::kable(
  statistiky_roky,
  digits = 3,
  caption = "Štatistiky obnoviteľnej energie podľa rokov"
)
Štatistiky obnoviteľnej energie podľa rokov
Rok Pocet Priemer Median
2000 172 34.489 26.540
2001 171 34.091 25.530
2002 171 34.000 24.680
2003 171 33.633 24.640
2004 171 33.458 22.630
2005 171 33.381 21.990
2006 171 33.078 21.960
2007 173 32.491 21.840
2008 173 32.580 21.910
2009 173 32.682 22.500
2010 173 32.477 22.300
2011 173 32.162 22.740
2012 173 32.082 22.450
2013 174 32.302 23.820
2014 174 32.074 24.165
2015 174 31.809 23.925
2016 174 31.591 22.730
2017 174 31.433 23.855
2018 174 31.487 23.905
2019 174 31.294 23.750
2020 1 81.900 81.900

8. Štatistické testovanie

T-test

Pomocou t-testu porovnám priemernú výrobu obnoviteľnej elektriny v dvoch obdobiach.

Kód
t_test <- t.test(
  Obnovitelna ~ Obdobie,
  data = vyroba
)

print(t_test)

    Welch Two Sample t-test

data:  Obnovitelna by Obdobie
t = 5.2067, df = 18.968, p-value = 5.047e-05
alternative hypothesis: true difference in means between group Novšie and group Staršie is not equal to 0
95 percent confidence interval:
 0.8197625 1.9220556
sample estimates:
 mean in group Novšie mean in group Staršie 
             6.160000              4.789091 

Nulová hypotéza predpokladá rovnakú priemernú výrobu obnoviteľnej elektriny v oboch obdobiach.

Pri interpretácii je potrebné zohľadniť, že časové pozorovania nemusia byť nezávislé.

ANOVA

Pomocou analýzy rozptylu porovnám podiel obnoviteľnej energie medzi Slovenskom, Nemeckom, Rakúskom a Poľskom.

Kód
anova_udaje <- subset(
  energetika_cista,
  Krajina %in% c(
    "Slovakia",
    "Germany",
    "Austria",
    "Poland"
  ) & !is.na(Podiel)
)

anova_udaje$Krajina <- factor(
  anova_udaje$Krajina
)

anova_model <- aov(
  Podiel ~ Krajina,
  data = anova_udaje
)

summary(anova_model)
            Df Sum Sq Mean Sq F value Pr(>F)    
Krajina      3   6201  2066.9   151.4 <2e-16 ***
Residuals   76   1037    13.7                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ANOVA umožňuje porovnať priemerné hodnoty medzi viacerými skupinami. Vzhľadom na opakované ročné pozorovania sú výsledky orientačné.

9. Lineárna regresia

Vývoj obnoviteľnej elektriny

Pomocou lineárnej regresie preskúmam vzťah medzi rokom a výrobou obnoviteľnej elektriny na Slovensku.

Model má tvar:

\[ REN_t = \beta_0 + \beta_1 ROK_t + \varepsilon_t \]

Kde:

  • \(REN_t\) je výroba obnoviteľnej elektriny,
  • \(ROK_t\) je rok,
  • \(\beta_0\) je konštanta,
  • \(\beta_1\) je regresný koeficient,
  • \(\varepsilon_t\) je náhodná chyba.
Kód
model <- lm(
  Obnovitelna ~ Rok,
  data = vyroba
)

summary(model)

Call:
lm(formula = Obnovitelna ~ Rok, data = vyroba)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.00636 -0.39968 -0.00301  0.39030  0.95586 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -240.2219    38.1941  -6.289 4.88e-06 ***
Rok            0.1222     0.0190   6.432 3.63e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.5273 on 19 degrees of freedom
Multiple R-squared:  0.6853,    Adjusted R-squared:  0.6687 
F-statistic: 41.37 on 1 and 19 DF,  p-value: 3.632e-06

Regresný graf

Kód
plot(
  vyroba$Rok,
  vyroba$Obnovitelna,
  pch = 19,
  col = "darkgreen",
  xlab = "Rok",
  ylab = "Výroba (TWh)",
  main = "Lineárny trend obnoviteľnej elektriny"
)

abline(
  model,
  col = "darkblue",
  lwd = 2
)

Regresné koeficienty

Kód
koeficienty <- as.data.frame(
  summary(model)$coefficients
)

koeficienty$Premenna <- rownames(
  koeficienty
)

rownames(koeficienty) <- NULL

knitr::kable(
  koeficienty,
  digits = 4,
  caption = "Regresné koeficienty"
)
Regresné koeficienty
Estimate Std. Error t value Pr(>|t|) Premenna
-240.2219 38.1941 -6.2895 0 (Intercept)
0.1222 0.0190 6.4320 0 Rok

Štatistiky regresného modelu

Kód
statistiky_modelu <- data.frame(
  R_squared = summary(model)$r.squared,
  Adjusted_R_squared = summary(model)$adj.r.squared,
  Pocet_pozorovani = nobs(model)
)

knitr::kable(
  statistiky_modelu,
  digits = 4,
  caption = "Štatistiky regresného modelu"
)
Štatistiky regresného modelu
R_squared Adjusted_R_squared Pocet_pozorovani
0.6853 0.6687 21

Regresia umožňuje identifikovať historický trend, ale nedokazuje príčinnú súvislosť.

10. Výber databázy na ďalšie hodiny

Na ďalšie hodiny som si vybral databázu Global Data on Sustainable Energy (2000–2020) z platformy Kaggle.

Databáza obsahuje historické údaje o energetike za jednotlivé krajiny.

Plánujem pracovať najmä s týmito premennými:

  • krajina,
  • rok pozorovania,
  • výroba elektriny z obnoviteľných zdrojov,
  • výroba elektriny z fosílnych palív,
  • výroba jadrovej elektriny,
  • podiel obnoviteľnej energie na konečnej spotrebe,
  • emisie CO₂,
  • HDP na obyvateľa.

Údaje sú vhodné na analýzu časových radov, pretože obsahujú pozorovania za roky 2000 až 2020.

Chcem sledovať vývoj obnoviteľných zdrojov energie na Slovensku a porovnávať ho s ďalšími krajinami.

Databázu budem využívať aj pri čistení údajov, tvorbe grafov a štatistickom modelovaní.

Zdroj databázy:

https://www.kaggle.com/datasets/anshtanwar/global-data-on-sustainable-energy

Záver

V tomto dokumente som demonštroval základné možnosti práce s databázami v programovacom jazyku R.

Použil som historickú databázu Global Data on Sustainable Energy.

Na základe skutočných údajov som vytvoril dátové rámce, filtroval a triedil pozorovania, vypočítal základné štatistiky a vytvoril grafy.

Následne som použil t-test, analýzu rozptylu a lineárnu regresiu.

Získané poznatky budem môcť využiť pri ďalšej analýze udržateľnej energetiky.