1) Vytvořte histogram proměnné LungCap, jenž bude rozlišovat kuřáky a nekuřáky. Pro kuřáky zvolte barvu modrou a pro nekuřáky žlutou. ggplot(LungCapData, # histogram proměnné LungCap a Smoke aes(x=LungCap, fill = Smoke)) + geom_histogram() + scale_fill_manual(values = c("yellow", "blue")) 2) Dokázali byste vytvořit histogram pro proměnnou Partie? ggplot(Katan, # histogram proměnné Partie aes(x = Partie)) + geom_histogram(binwidth = 1, colour='#ffffff', fill='blue') + scale_x_continuous(breaks = seq(from = 0, to = 10, by = 1), position = "bottom") + scale_y_continuous(breaks = seq(from = 0, to = 60, by = 10)) 3) Wide vs long library(tidyr) # proměnné Jméno <- c("Jakub", "Jakub", "Jakub", "David", "David", "David", "Petra", "Petra", "Petra") Známka <- c(1, 2, 3, 4, 5, 1, 2, 3, 4) Předmět <- c("AJ", "NJ", "ČJ", "AJ", "NJ", "ČJ", "AJ", "NJ", "ČJ") Pohlaví <- c("muž", "muž", "muž", "muž", "muž", "muž", "žena", "žena", "žena") Věk <- c(14, 14, 14, 15, 15, 15, 16, 16, 16) # datová tabulka č. 1 (formát long) Škola <- data.frame(Jméno, Pohlaví, Věk, Předmět, Známka) # datová tabulka č.2 (formát wide) Škola <- data.frame(Jméno, Pohlaví, Věk, Předmět, Známka) Škola2 <- spread(Škola, Předmět, Známka) 1. každé pozorování je popsáno jedním řádkem; 2. každá proměnná je obsažena v jednom sloupci; 3. každý typ pozorování má vlastní tabulku. Long Format (Dlouhý Formát) ---------------------------- Definice: V dlouhém formátu může každý subjekt zaujímat více řádků, přičemž každý řádek představuje jednu proměnnou nebo opakované měření. Charakteristika: Tento formát je vhodný pro opakovaná měření nebo když se jedna proměnná měří ve více kategoriích. Je velmi užitečný pro statistické modelování a často je preferován v analytickém software jako R nebo Python (pandas), protože usnadňuje skupinové operace a transformace dat. Wide Format (Široký Formát) ------------------------------ Definice: V širokém formátu má každý subjekt (např. osoba, měřicí jednotka) jediný řádek dat spojených s několika proměnnými. Každá proměnná je reprezentována vlastním sloupcem. Charakteristika: Tento formát je intuitivní pro ukládání dat, která mají mnoho proměnných pro každý subjekt nebo měření. Často se používá pro tabulkové programy jako je Excel, kde každý sloupec může představovat různé atributy subjektu. Vezměme si nyní do úvahy, že chceme Kubovi z naší datové tabulky Škola2 (formát wide) přidat nové známky z němčiny. Jak to provést? Obtížně, protože přidáním nového řádku budeme nuceni vytvořit prázdné hodnoty pro proměnné ČJ a AJ, což nedává smysl. Nový_řádek <- list("Jakub", "muž", 14, "NA", "NA", 3) Škola2 <- rbind(Škola2, Nový_řádek) Škola2 Představte si kupříkladu, že se nám databáze rozšíří o několik dalších řádků a naším cílem bude spočítat průměrné známky všech studentů za jednotlivé předměty. S pomocí dplyr příkazů aplikovaných na tabulku ve formátu long to bude hračka. Ve formátu wide by se však jednalo o mnohem komplikovanější úkon, zvláště tehdy, pokud byste například chtěli vypočítat studijní průměr mezi všemi třemi předměty. !!! Kdy Použít Který Formát? ---------------------- Wide Format: Může být výhodnější pro vizualizaci, když chcete vidět všechny proměnné spojené s každým subjektem na jednom místě. Long Format: Je obvykle lepší pro analýzu dat, protože zjednodušuje agregaci dat, transformace a přípravu dat pro statistické modelování. # Long to wide # názvy jednotlivých parametrů též něco napoví o skladbě příkazu spread() Škola2 <- spread(data = Škola, key = Předmět, value = Známka) Škola <- gather(Škola2, Predmět, Známka, 4:6) # Separate vs unite Unite <- unite(Škola, Jméno_věk, c("Jméno", "Věk"), sep = " ") Separate <- separate(Unite, Jméno_věk, c("Jméno", "Věk"), sep = " ") # Narm Katan[1,1] <- NA cleanKatan <- Katan[complete.cases(Katan), ] https://elandio.fra1.cdn.digitaloceanspaces.com/cesta/SWIID.csv Příklad SWIID Seznamme se s databází příjmové nerovnosti s názvem SWIID, která sleduje tento fenomén v jednotlivých letech a státech. Příjmová nerovnost se měří pomocí tzv. Giniho koeficientu, jenž nabývá hodnot od nuly do jedné (kde 0 značí absolutní rovnost - všichni vlastní stejně a 1 absolutní nerovnost - jeden člověk vlastní vše). Databáze SWIID (Standardized World Income Inequality Database) však bohužel není připravena k okamžité analýze v R. Vaším úkolem bude tento stav napravit. Problémů, které v této databázi naleznete, je hned několik. Podívejte se proto nejdříve na následující srovnání, ve kterém je zobrazen stav databáze SWIID před úpravou a po ní. SWIID <- read.csv2("C:/Users/jsoln/OneDrive/Desktop/RLANDIO/SWIID.csv") print("Databáze SWIID před úpravou") head(SWIID) SWIID2 <- SWIID %>% gather(key = "Rok", value = "Gini", 2:56) %>% separate(stát, c("stát", "Kód_země"), sep = "/") %>% mutate(Rok = substring(Rok, 2)) %>% filter(complete.cases(.)) # Na závěr ještě musíme upravit číslování řádků, které před tím # převzalo hodnoty z původní databáze SWIID. print("Databáze SWIID po úpravě") head(SWIID2) SWIID3 <- SWIID %>% gather(key = "rok", value = "gini", -stát) %>% # Převod na dlouhý formát filter(!is.na(gini)) %>% # Odstranění řádků s NA separate(stát, into = c("název_státu", "kód_země"), sep = "/")