Práca s databázou

Author

Chiara Púčeková

Published

October 1, 2026

library(readxl)
library(dplyr)
library(ggplot2)
library(knitr)
library(kableExtra)
library(janitor)

Práca s databázou

Na analýzu bola použitá databáza, ktorá sa zameriava na pracovné podmienky, spokojnosť zamestnancov a ich úmysel odísť zo zamestnania

udaje <- read_excel("HR_Attrition_R_ready_final.xlsx")

udaje <- janitor::clean_names(udaje)

head(udaje)
# A tibble: 6 × 20
  age               gender work_tenure       education job_position working_hour
  <chr>             <chr>  <chr>             <chr>     <chr>        <chr>       
1 26-35 year        Male   3 - 5 years       Master's… Senior lect… less than 40
2 26-35 year        Female Less than 2 years Bachelor… Lecturer     less than 40
3 46-55 year        Female more than 5 years Doctorat… Professor    40-45       
4 more than 56 year Female more than 5 years Doctorat… Professor    51-55       
5 26-35 year        Female 3 - 5 years       Bachelor… Lecturer     40-45       
6 26-35 year        Female more than 5 years Master's… Lecturer     40-45       
# ℹ 14 more variables: satisfaction_with_workload <dbl>,
#   satisfied_compensation <dbl>, good_relationship_with_peers <dbl>,
#   satisfied_with_career_and_opportunity <dbl>,
#   satisfied_with_job_profession <dbl>, monthly_salary <dbl>,
#   satisfied_with_work_life_balance <dbl>, work_is_meaningful <dbl>,
#   family_supports <dbl>, mentally_well_and_do_not_have_anxiety <dbl>,
#   x1_in_last_3_months_i_am_thinking_of_quitting_from_this_office_organization_dalam_3_bulan_terakhir_saya_berpikir_untuk_berhenti_dari_kantor_organisasi_ini <dbl>, …

Tabuľka respondentov podľa veku

Táto tabuľka zobrazuje počet a percentuálne zastúpenie respondentov v jednotlivých vekových skupinách

tabulka_vek <- udaje %>%
  count(age) %>%
  mutate(
    percento = round(n / sum(n) * 100, 1)
  )

tabulka_vek %>%
  kable(
    format = "html",
    escape = FALSE,
    caption = "Štruktúra respondentov podľa vekových skupín",
    col.names = c(
       "<span style='display:block; background-color:#f2b6cf; border:1px solid #d94f8a; padding:6px; text-align:center;'>Veková skupina</span>",
  "<span style='display:block; background-color:#f2b6cf; border:1px solid #d94f8a; padding:6px; text-align:center;'>Počet respondentov</span>",
  "<span style='display:block; background-color:#f2b6cf; border:1px solid #d94f8a; padding:6px; text-align:center;'>Percento (%)</span>"
    ),
    table.attr = "style='border-collapse:collapse; border:2px solid #d94f8a;'"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  ) %>%
  column_spec(1, bold = TRUE)
Štruktúra respondentov podľa vekových skupín
Veková skupina Počet respondentov Percento (%)
18-25 year 66 12.5
26-35 year 153 29.1
36-45 year 161 30.6
46-55 year 106 20.2
more than 56 year 40 7.6

Náhľad databázy

Na tomto obrázku možno vidieť časť databázy v exceli pred spracovaním v R

Náhľad databázy

Spokojnosť respondentov s finančným ohodnotením v závislosti od veku

Na tomto grafe je zobrazená priemerná spokojnosť s finančným ohodnotením v rámci jednotlivých vekových skupín respondentov

graf_data <- udaje %>%
  mutate(
    age = factor(
      age, 
      levels = c(
        "18-25 year",
        "26-35 year",
        "36-45 year",
        "46-55 year",
        "more than 56 year"
      )
    )
  ) %>%
  group_by(age) %>%
  summarise(
    priemer_spokojnosti = mean(satisfied_compensation, na.rm = TRUE)
  )

ggplot(graf_data, aes(x = age, y = priemer_spokojnosti)) +
  geom_col(fill = "#d94f8a") + 
  labs(
    title = "Spokojnosť s finančným ohodnotením podľa vekových skupín",
    x = "Veková skupina",
    y = "Priemerná spokojnosť"
  ) +
  theme_minimal()

Úmysel odísť zo zamestnania

Graf zobrazuje podiel respondentov s úmyslom odísť zo zamestnania v jednotlivých vekových skupinách

toi_vek <- udaje %>%
  group_by(age) %>%
  summarise(
    podiel_toi = mean(toi_turnover_intention, na.mr = TRUE) * 100
  )

ggplot(toi_vek, aes(x = age, y = podiel_toi)) +
  geom_col(fill = "#f2b6cf") +
  labs(
    title = "Úmysel odísť zo zamestnania",
    x = "Veková skupina",
    y = "Podiel respondentov (%)"
  ) +
  theme_minimal()

Základná charakteristika databázy

Na záver ešte spravíme základnú deskriptívnu štatistiku použitých premenných

summary(udaje)
        age            gender       work_tenure      education  
 Length   :526   Length   :526   Length   :526   Length   :526  
 N.unique :  5   N.unique :  2   N.unique :  3   N.unique :  4  
 N.blank  :  0   N.blank  :  0   N.blank  :  0   N.blank  :  0  
 Min.nchar: 10   Min.nchar:  4   Min.nchar: 11   Min.nchar: 11  
 Max.nchar: 17   Max.nchar:  6   Max.nchar: 17   Max.nchar: 34  
                                                                
    job_position    working_hour satisfaction_with_workload
 Length   :526   Length   :526   Min.   :1.000             
 N.unique :  4   N.unique :  5   1st Qu.:2.000             
 N.blank  :  0   N.blank  :  0   Median :4.000             
 Min.nchar:  8   Min.nchar:  5   Mean   :3.382             
 Max.nchar: 19   Max.nchar: 12   3rd Qu.:4.000             
                                 Max.   :5.000             
 satisfied_compensation good_relationship_with_peers
 Min.   :1.00           Min.   :2.00                
 1st Qu.:3.00           1st Qu.:3.00                
 Median :3.00           Median :4.00                
 Mean   :3.34           Mean   :3.62                
 3rd Qu.:4.00           3rd Qu.:4.00                
 Max.   :5.00           Max.   :5.00                
 satisfied_with_career_and_opportunity satisfied_with_job_profession
 Min.   :1.000                         Min.   :2.000                
 1st Qu.:3.000                         1st Qu.:3.000                
 Median :4.000                         Median :4.000                
 Mean   :3.483                         Mean   :3.513                
 3rd Qu.:4.000                         3rd Qu.:4.000                
 Max.   :5.000                         Max.   :5.000                
 monthly_salary  satisfied_with_work_life_balance work_is_meaningful
 Min.   :1.000   Min.   :1.000                    Min.   :2.000     
 1st Qu.:2.000   1st Qu.:3.000                    1st Qu.:3.000     
 Median :2.000   Median :4.000                    Median :4.000     
 Mean   :2.498   Mean   :3.506                    Mean   :3.671     
 3rd Qu.:3.000   3rd Qu.:4.000                    3rd Qu.:4.000     
 Max.   :4.000   Max.   :5.000                    Max.   :5.000     
 family_supports mentally_well_and_do_not_have_anxiety
 Min.   :1.000   Min.   :1.000                        
 1st Qu.:3.000   1st Qu.:3.000                        
 Median :4.000   Median :4.000                        
 Mean   :3.549   Mean   :3.445                        
 3rd Qu.:4.000   3rd Qu.:4.000                        
 Max.   :5.000   Max.   :5.000                        
 x1_in_last_3_months_i_am_thinking_of_quitting_from_this_office_organization_dalam_3_bulan_terakhir_saya_berpikir_untuk_berhenti_dari_kantor_organisasi_ini
 Min.   :1.000                                                                                                                                             
 1st Qu.:2.000                                                                                                                                             
 Median :2.000                                                                                                                                             
 Mean   :2.637                                                                                                                                             
 3rd Qu.:4.000                                                                                                                                             
 Max.   :5.000                                                                                                                                             
 x2_in_last_3_months_i_am_searching_for_an_alternative_job_dalam_3_bulan_terakhir_saya_mencari_alternatif_pekerjaan_lain
 Min.   :1.000                                                                                                          
 1st Qu.:2.000                                                                                                          
 Median :2.000                                                                                                          
 Mean   :2.665                                                                                                          
 3rd Qu.:4.000                                                                                                          
 Max.   :5.000                                                                                                          
 x3_in_last_3_months_i_have_low_work_motivation_dalam_3_bulan_terakhir_motivasi_kerja_saya_rendah
 Min.   :1.000                                                                                   
 1st Qu.:2.000                                                                                   
 Median :2.000                                                                                   
 Mean   :2.751                                                                                   
 3rd Qu.:4.000                                                                                   
 Max.   :5.000                                                                                   
 toi_turnover_intention
 Min.   :0.0000        
 1st Qu.:0.0000        
 Median :0.0000        
 Mean   :0.3821        
 3rd Qu.:1.0000        
 Max.   :1.0000        

Vybrané pracovné faktory podľa veku

faktory_vek <- udaje %>%
  group_by(age) %>%
  summarise(
    `Pracovná záťaž` = round(mean(satisfaction_with_workload, na.rm = TRUE), 2),
    `Finančné ohodnotenie` = round(mean(satisfied_compensation, na.rm = TRUE), 2),
    `Vzťahy s kolegami` = round(mean(good_relationship_with_peers, na.rm = TRUE), 2),
    `Kariéra a príležitosti` = round(mean(satisfied_with_career_and_opportunity, na.rm = TRUE), 2)
  )

faktory_vek %>%
  kable(
    format = "html",
    escape = FALSE,
    caption = "Priemerné hodnotenie vybraných faktorov v závislosti od veku",
    col.names = c(
      "<span style='display:block; background-color:#f2b6cf; padding:6px; text-align:center;'>Veková skupina</span>",
  "<span style='display:block; background-color:#f2b6cf; padding:6px; text-align:center;'>Pracovná záťaž</span>",
  "<span style='display:block; background-color:#f2b6cf; padding:6px; text-align:center;'>Finančné ohodnotenie</span>",
  "<span style='display:block; background-color:#f2b6cf; padding:6px; text-align:center;'>Vzťahy s kolegami</span>",
  "<span style='display:block; background-color:#f2b6cf; padding:6px; text-align:center;'>Kariéra a príležitosti</span>"
    )
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )
Priemerné hodnotenie vybraných faktorov v závislosti od veku
Veková skupina Pracovná záťaž Finančné ohodnotenie Vzťahy s kolegami Kariéra a príležitosti
18-25 year 3.23 3.20 3.55 3.30
26-35 year 3.39 3.32 3.61 3.44
36-45 year 3.37 3.31 3.56 3.42
46-55 year 3.38 3.40 3.68 3.67
more than 56 year 3.70 3.62 3.88 3.72