1 Procvičování 6 Natáhněte si pracovní prostředí z http://www.sci.muni.cz/ syrovat/cv06.RData. load(url("http://www.sci.muni.cz/~syrovat/cv06.RData")) 1. Vytvořte faktor sex s úrovněmi m a z, z nichž každá se ve faktoru bude desetkrát opakovat. sex <- factor(rep(c("m", "z"), each = 10)) sex ## [1] mmmmmmmmmmzzzzzzzzzz ## Levels: m z 2. Přejmenujte úrovně faktoru sex na male (m) a female (z). # dve možnosti, bud zmenime jména úrovni pomoci argumentu labels= funkce # factor O '■ factor(sex, labels = c("male", "female")) ## [1] male male male male male male male male male male ## [11] female female female female female female female female female female ## Levels: male female # v tomhle pripade jsem ale nezměnil faktor sex, jen jsem ho nechal změněny # vypsat, nebo primo prepiseme urovne fatoru sex: levels(sex) <- c("male", "female") sex ## [1] male male male male male male male male male male ## [11] female female female female female female female female female female ## Levels: male female 3. Přehoďte úrovně faktoru sex tak, že první bude female. # opet vic možnost, bud pomoci argumentu levels= funkce factor(): factor(sex, levels = c("female", "male")) ## [1] male male male male male male male male male male ## [11] female female female female female female female female female female ## Levels: female male # nebo pomoci funkce relevel() relevel(sex, "female") ## [1] male male male male male male male male male male ## [11] female female female female female female female female female female ## Levels: female male # samozrejme jsem sex nezmenil, jen nechal vypsat reseni. 2 4. Z vektoru celých čísel od 1 do 25 vytvořte faktor petice odlišující pětice hodnot, jak jdou po sobě (1-5, 6-10, 21-25). Úrovně tohoto faktoru nazvěte nejmensi, maly, strední, velký, nejvetsi. petice <- cut(l:25, breaks = c(0, 5, 10, 15, 20, 25), labels = c("nejmensi", "maly", "stredni", "velký", "nejvetsi")) petice ## [1] nejmensi nejmensi nejmensi nejmensi nejmensi maly maly ## [8] maly maly maly stredni stredni stredni stredni ## [15] stredni velký velký velký velký velký nejvetsi ## [22] nejvetsi nejvetsi nejvetsi nejvetsi ## Levels: nejmensi maly stredni velký nejvetsi # nebo taky cut(l:25, breaks = 0:5 * 5, labels = c("nejmensi", "maly", "stredni", "velký", "nejvetsi")) ## [1] nejmensi nejmensi nejmensi nejmensi nejmensi maly maly ## [8] maly maly maly stredni stredni stredni stredni ## [15] stredni velký velký velký velký velký nejvetsi ## [22] nejvetsi nejvetsi nejvetsi nejvetsi ## Levels: nejmensi maly stredni velký nejvetsi # nebo taky treba takhle cut(l:25, breaks = seq(0, 25, 5), labels = c("nejmensi", "maly", "stredni", "velký", "nejvetsi")) ## [1] nejmensi nejmensi nejmensi nejmensi nejmensi maly maly ## [8] maly maly maly stredni stredni stredni stredni ## [15] stredni velký velký velký velký velký nejvetsi ## [22] nejvetsi nejvetsi nejvetsi nejvetsi ## Levels: nejmensi maly stredni velký nejvetsi 5. Pro kontrolu zobrazte vektor 1-25 proti faktoru petice. par(mar = c(4, 4, 1, 0.1)) plot(1:25 ~ petice) 3 1- nejmensi strední velký petice 6. Zjistěte, jaké proměnné jsou v dtaframu env. names(env) # nebo colnames(env) ## [1] "gr_env" "depth" "velocity" "froude" 7. Přejmenujte proměnnou gr_ env dataframu env na hab. names(env)[names(env) == "gr_env"] <- "hab" 8. Přesvědčte se, že proměnná hab dataframu env je faktor (odpovědí R bude TRUE / FALŠE). i s . f act or (env$hab) ## [1] TRUE 9. Zjistěte, kolik úrovní tento faktor má a jaké to jsou. nlevels(env$hab) ## [1] 5 levels(env$hab) ## [1] "Ep" "Ep_CP0M" "Ep_FP0M" "Er" "Er_VEG" 10. Přejmenujte úrovně faktoru hab dataframu env následovně: Ep_CPOM na CPOM, Ep_FPOM na FPOM, Ep na P, Er na R, Er_VEG na VEG. CM O C\l m — 4 # 2 možnosti, vzdy ale musime dodržet stejné poradi úrovni, v jakém jsou v # definici faktoru, bud použijeme factor(): factor(env$hab, labels = c("P", "CPOM", "FPOM", "R", "VEG")) ## [1] P P P FPOM FPOM FPOM R R R VEG VEG VEG CPOM P ## [15] VEG P P VEG P R VEG P P VEG R CPOM CPOM ## Levels: P CPOM FPOM R VEG # nebo prepiseme primo úrovne: levels(env$hab) <- c("P", "CPOM", "FPOM", "R", "VEG") env$hab ## [1] P P P FPOM FPOM FPOM R R R VEG VEG VEG CPOM P ## [15] VEG P P VEG P R VEG P P VEG R CPOM CPOM ## Levels: P CPOM FPOM R VEG 11. V dataframu env vytvořte kopii faktoru hab hab2, v níž spojíte úrovně CPOM a FPOM do jedné OM. env$hab2 <- env$hab # vidim, ze spojované úrovne jsou ne 2. a 3. miste, proto nahradim 2. a 3. # uroven: levels(env$hab2)[2:3] <- "OM" # pokud bych ale nechtěl manuálne odpocitavat, lze to uselat obecněji: env$hab2 <- env$hab levels(env$hab2) [levels(env$hab2) '/,in'/0 c("CP0M", "FPOM")] <- "OM" # výsledek muzeme zkontrolovat pomoci krizové tabulky z funkce table() table(env$hab, env$hab2) ## ## P OM R VEG ## P 9 0 0 0 ## CPOM 0 3 0 0 ## FPOM 0 3 0 0 ## R 0 0 5 0 ## VEG 0 0 0 7 12. Zobrazte krabicový graf závislosti logaritmované abundance druhu Tvetenia discoloripes, tvetdive dataframu spe na typu habitatu. par(mar = c(4, 4, 1, 0.1)) plot(loglp(spe$tvetdive) ~ env$hab2) 5 CD > CD > -I—* 68-CD CL CO — CM — O O — env$hab2 13. Přeřaďte úrovně faktoru hab2 tak, aby úroveň VEG byla první - referenční a vykreslete graf znovu. env$hab2 <- relevel(env$hab2, "VEG") par(mar = c(4, 4, 1, 0.1)) plot(loglp(spe$tvetdive) ~ env$hab2) CD > > -I—* 68-CD CL CO — CM — co O O — env$hab2 14. Seřaďte úrovně faktoru hab2 podle průměrného Froudeho čísla v jednotlivých úrovních a vykreslete graf znovu. env$hab2 <- reorder(env$hab2, env$froude, mean) par(mar = c(4, 4, 1, 0.1)) plot(loglp(spe$tvetdive) ~ env$hab2) 6 CD > CD > -I—* tácu CL CO co H o o H env$hab2 15. Zobrazte bodový graf závislosti hloubky depth na rychlosti proudu velocity a typem symbolů a barvou odlište vzorky z jednotlivých habitatů hab2. Typ symbolu vybírejte z hodnot 1:25, barvu z colours(). par(mar = c(4, 4, 1, 0.1)) plot(depth ~ velocity, data = env, pch = c(l, 15, 2, 9)[hab2], col = c("firebrick3", "peachpuff3", "olivedrab3", "midnightblue")[hab2]) 0.0 0.2 0.4 0.6 0.8 velocity 16. V dataframu env vytvořte faktor hydr s úrovněmi pool, run a riffle, odlišující tůňové (pool), slapové (run) a peřejové (riffle) habitaty. Jako kritérium pro odlišení habitatů použijte Froudeho číslo (hraniční hodnoty pool <= 0,18 < run <= 0,41 < riffle). 7 env$hydr <- cut(env$froude, breaks = c(0, 0.18, 0.41, max(env$froude)), include.lowest labels = cO'pool", "run", "riffle")) env$hydr ## [1] pool pool pool pool pool pool run riffle run run ## [11] run riffle pool run run pool pool run pool riffle ## [21] riffle pool pool riffle riffle pool pool ## Levels: pool run riffle 17. Nechejte si vypsat faktor hydr jako čísla, as.numeric(env$hydr) ## [1] 111111232223122112133113311 18. Seřaďte úrovně faktoru hydr sestupně podle mediánu Froudeho čísla. (Když hodnoty převedeme na záporné, ty nejvyšší se stanou nejnižšími.) env$hydr <- reorder(env$hydr, -env$froude, median) levels(env$hydr) ## [1] "riffle" "run" "pool" 19. O správném seřazení se přesvědčte pomocí boxplotu Froudeho čísla v závislosti na hydr. par(mar = c(4, 4, 1, 0.1)) plot(froude ~ hydr, data = env) CD T3 O ^1- Ö C\l o o o riffle run hydr pool 8 20. Obdobně jako v bodě 14 zobrazte bodový graf závislosti hloubky depth na rychlosti proudu velocity, ale barvou odlište lokality s odlišnými hydraulickými podmínkami (hydr). Barvy volte tak, aby vhodně ilustrovaly postupně se měnící hydraulické podmínky, tedy např. podobného odstínu, pool nejsvětlejší a riffle nejtmavší. par(mar = c(4, 4, 1, 0.1)) plot(depth ~ velocity, data = env, col = c("midnightblue", "royalblue2", "lightskybluel")[hydr], pch = 16, cex = 1.5) 0.0 0.2 0.4 0.6 0.8 velocity