install.packages("dplyr") library(foreign) library(dplyr) #nacteni dat z SPSS, pozor na prikaz use.value.label=F, urcuje, jestli se nahraji popisky dat, nebo jejich ceslne zaznamenani brezen <- read.spss("C:\\Users\\petrh\\Documents\\politologie\\vyuka\\datamanagment\\V2003_F1.sav", use.value.label=FALSE, to.data.frame=TRUE) str(brezen) summary(brezen) cerven <- read.spss("C:\\Users\\petrh\\Documents\\politologie\\vyuka\\datamanagment\\V2006B_F1.sav", use.value.label=F, to.data.frame=TRUE) str(cerven) summary(cerven) spojit <- rbind(brezen, cerven) #odstraneni potencialne matoucich znaku names(brezen) #co chci nahradit # čim to chci nahradit names(brezen) <- gsub(x = names(brezen), pattern = "_", replacement = "") #prevedni vsech znaku v nazvech sloupcu na mala pismena colnames(brezen) <- tolower(colnames(brezen)) #pridani promenny rok a mesic, cislo se pise jen tak, text v uvozovkach brezen$rok <-2020 brezen$mesic <- "brezen" names(cerven) <- gsub(x = names(cerven), pattern = "_", replacement = "") colnames(cerven) <- tolower(colnames(cerven)) cerven$rok <-2020 cerven$mesic <- "cerven" #spojeni dvou tabulek pod sebe, i kdyz se lisi v poctech sloupcu a castecne v jejich nazvech ??bind_rows kveten_cerven <- bind_rows(brezen, cerven) #zjisteni, ktere sloupce maji stejne nazvy v obou datasetech prunik_sloupcu <- intersect(colnames(brezen), colnames(cerven)) #vybrani jen sloupcu, které byly v obou datasetech vyber <- kveten_cerven[c(prunik_sloupcu)] summary(vyber) names(vyber) #rekodovani # když potřebujeme upravit puvodni promennou - zmensit pocet kategorii, sloucit promenne, apod. #spokojenost se zivotem #nejprve je potreba se podivat na puvodni hodnoty (a v dotazniku na to, co puvodni hodnoty znamenaji) table(vyber$ov1) #rekodovani do ciselne promenne vyber$spokojenost <- NA #nejprve vyrobime promennou a vsechny jeji hodnoty nastavime na NA - missing values vyber$spokojenost[vyber$ov1 == 1 |vyber$ov1 == 2 ] <- 1 # potom postupne zaplnime pripady platnymi hodnotami na zaklade hodnot puvodni promenne vyber$spokojenost[vyber$ov1 == 3 ] <- 2 ##|vyber$ov1 == 9 vyber$spokojenost[vyber$ov1 == 4 |vyber$ov1 == 5 ] <- 3 #kontrola vystupu table(vyber$spokojenost) #tabulka nam ukaze, jestli odovidaji pocty v zamyslenych kategoriich summary(vyber$spokojenost) #summary nám ukaze pocet chybejicich hodnot ## rekodovani do dummy promenne (napr. pro ucely regresni analyzy) vyber$spokojen <- 0 vyber$spokojen[vyber$ov1 == 1 |vyber$ov1 == 2 ] <- 1 #vybrana kategorie je 1, zbytek 0 table(vyber$spokojen) vyber$nespokojen <- 0 vyber$nespokojen[vyber$ov1 == 4 |vyber$ov1 == 5 ] <- 1 #dalsi vybrana kategorie je 1, zbytek 0, pripady, ktere jsou 0 pro obe kategorie jsou referencni kategorii table(vyber$nespokojen) ###factor - kategoricka promenna vyber$spokojenostf <- NA vyber$spokojenostf[vyber$ov1 == 1 |vyber$ov1 == 2 ] <- "spokojen" vyber$spokojenostf[vyber$ov1 == 3 |vyber$ov1 == 9 ] <- "ani ano, ani ne" vyber$spokojenostf[vyber$ov1 == 4 |vyber$ov1 == 5 ] <- "nespokojen" table(vyber$spokojenostf) #kategorie jsou serazeny abecedne, pro smysluplne razeni je potreba pouzit nasledujici prikaz vyber$spokojenostf <- factor(vyber$spokojenostf, levels =c("spokojen","ani ano, ani ne", "nespokojen" )) #, ordered = TRUE) table(vyber$spokojenostf) #rekodujte promennou zajem (1,2 = zajem, 3,4 = nezajem, 9 = nevi) table(vyber$po45a) vyber$zajem <- NA vyber$zajem[vyber$po45a == 1 |vyber$po45a == 2 ] <- "zajem" vyber$zajem[vyber$po45a == 9 ] <- "nevi" vyber$zajem[vyber$po45a == 3 |vyber$po45a == 4 ] <- "nezajem" vyber$zajem <- factor(vyber$zajem, levels =c("zajem","nezajem", "nevi" )) #, ordered = TRUE) table(vyber$zajem) #dalsi priklad #levice pravice table(vyber$po2) vyber$levice_pravice <- NA vyber$levice_pravice[vyber$po2 >= 1 & vyber$po2 <= 4] <- "levice" #nemusime vypisovat kazdou hodnotu, staci nastavit intervaly vyber$levice_pravice[vyber$po2 >= 5 & vyber$po2 <= 7] <- "stred" #pozor na prekryvani intervalu vyber$levice_pravice[vyber$po2 >= 8 & vyber$po2 <= 11] <- "pravice" vyber$levice_pravice[vyber$po2 >= 12 ] <- "nevi" table(vyber$levice_pravice) #elegantnejsi reseni vyber$levice.pravice <- cut(vyber$po2, breaks=c(-Inf, 4, 7, 11, Inf), labels=c("levice","stred","pravice", "nevi")) table(vyber$levice.pravice ) # pri rekodovani je mozne kombinovat vice promennych #preforovana strana table(vyber$pv4) table(vyber$pv191ab) vyber$preferovana_strana <- NA vyber$preferovana_strana[vyber$pv4 == 13 | vyber$pv191ab == 13] <- "ANO" vyber$preferovana_strana[vyber$pv4 == 4 | vyber$pv191ab == 4] <- "CSSD" #vlada/opozice #scitani promennych #duvera v ustavni instituce table(vyber$pi1a) table(vyber$pi1b) table(vyber$pi1c) table(vyber$pi1d) table(vyber$pi1e) table(vyber$pi1f) #urceni, ze nejaka hodnota je neplatna - v dotaznikovych datech typicky 9, 99, apod., vzdy nutno overit vyber$pi1a[vyber$pi1a ==9] <- NA vyber$pi1b[vyber$pi1b ==9] <- NA vyber$pi1c[vyber$pi1c ==9] <- NA vyber$pi1d[vyber$pi1d ==9] <- NA vyber$pi1e[vyber$pi1e ==9] <- NA vyber$pi1f[vyber$pi1f ==9] <- NA #secteni promennych vyber$duvera = vyber$pi1a + vyber$pi1b + vyber$pi1c + vyber$pi1d + vyber$pi1e + vyber$pi1e table(vyber$duvera) #rekodovani na skalu 0-10 vyber$duvera0_10 = (vyber$duvera - 6)/18*10 #rekodovani do logicke podoby - vyssi hodnota = vyssi duvera vyber$duvera0_10 = vyber$duvera0_10*-1 +10 table(vyber$duvera0_10) hist(vyber$duvera0_10) vyber$duvera0_1 = (vyber$duvera - 6)/18 #spocitejte promennou "sledovani" sectenim promennych "om36a","om36b","om36c","om36d","om36e","om36f","om36g" table(vyber$pv1) table(vyber$pv4text) table(vyber$pv191ab)