--- title: "Hadley verse" author: "Jaagup Kippar" date: "14 mai 2016" output: html_document --- Teegid ```{r message=FALSE, warning=FALSE} library(dplyr) library(magrittr) library(reshape2) library(ggplot2) ``` ```{r } ``` ```{r } ``` Andmed sisse ```{r } setwd("c:/jaagup/16/analyytika") andmed=read.table("student-mat.csv", header=TRUE, sep=";", dec=".") set.seed(1234) andmed <- as.data.frame(lapply(andmed, function(x) x[sample(c(TRUE, NA), prob = c(0.9, 0.1), size = length(x), replace = TRUE)])) ``` Andmete klassi muutus suurandmetega ohutumaks ümber käimiseks ```{r } andmed=tbl_df(andmed) andmed class(andmed) ``` Lisatulp tulemuste vahe jaoks ```{r } andmed=mutate(andmed, diff=G2-G1) ``` Puuduvate väärtuste arv algul ```{r } length(which(is.na(andmed$G2))) ``` Nullid NAdeks ```{r } andmed=mutate(andmed, G2=ifelse(G2>0, G2, NA)) andmed$G2 ``` Puuduvate väärtuste arv pärast asendust ```{r } length(which(is.na(andmed$G2))) ``` Suurim puudumiste arv poiste seas ```{r } kogus=max(select(filter(andmed, sex=="M"), absences), na.rm=TRUE) kogus ``` Tüdrukute arv, kelle puudumiste arv ületab suurimat puudumiste arvu poiste hulgas ```{r } nrow(filter(andmed, sex=="F", absences>kogus)) ``` Sama arvutus aga ühe käsuna korraga ei taha toimida Error: Each argument must yield either positive or negative integers ```{r } #ei toimi #nrow(filter(andmed, sex=="F", absences>max(select(filter(andmed, sex=="M"), absences), na.rm=TRUE))) ``` Iga reason ja sex kombinatsiooni kohta keskmine aastalõpu hinne (G3), laste arv igas kombinatsioonigrupis ```{r } summarise(group_by(andmed, reason, sex), keskmine=mean(G3, na.rm=TRUE), lastearv=n()) %>% na.omit ``` Kolme tulba keskmine ```{r } summarise(group_by(andmed, reason), keskmine=mean(G1+G2+G3, na.rm=TRUE)) ``` Sama toru abil ```{r } group_by(andmed, reason) %>% summarise(keskmine=mean(G1+G2+G3, na.rm=TRUE)) ``` Lisatulp ja lisaarvutused ```{r } mutate(andmed, kolmesumma=G1+G2+G3) %>% group_by(reason) %>% summarise(keskmine=mean(kolmesumma, na.rm=TRUE), standardhalve=sd(kolmesumma, na.rm=TRUE), grupisuurus=n()) ``` summarise_each ei taha vedu võtta ```{r } # summarise(group_by(andmed, reason, sex), keskmine=mean(G1+G2+G3, na.rm=TRUE)) %>% summarise_each(fun=c(sd)) ``` Keskmine ja standardhälve sex ja guardian paari järgi, keskmise järgi kahanevalt järestatud. Mingil salapärasel põhjusel tarvilik ungroup. ```{r } andmed %>% group_by(sex, guardian) %>% summarise(keskmine=mean(G1+G2+G3, na.rm=TRUE), standardhalve=sd(G1+G2+G3, na.rm=TRUE), grupisuurus=n()) %>% ungroup() %>% arrange(desc(keskmine)) ``` #Jooniste katsetused Sobival kujul soo ja semestri järgi tabelisse saamiseks sättisin andmeid mitmel moel, kuid lõpuks tööle hakkas ikkagi traditsiooniliste sapply ja tapply funktsioonide abil kokku tõstetud tulemus. Kindlasti on sellele olemas ka lihtsam lahendus. ```{r } tulemused=sapply(list(andmed$G1, andmed$G2, andmed$G3), function(tulp) tapply(tulp, andmed$sex, mean, na.rm=TRUE)) tulemused ``` Kontrolliks kõrvale traditsiooniline tulpdiagramm ```{r } barplot(tulemused, beside=TRUE, legend=TRUE, ylim=c(8, 12)) ``` ning joontega diagramm. Ka siin ei leidnud head lahendust kõikide joonte korraga kuvamiseks. Toimis aga nõnda, et esimese joone sain plot-i abil ning teise (ja vajadusel järgnevad) lines käsust (rohkematena tõenäoliselt tsüklisse panduna). ```{r } plot(tulemused[1, ], type="l", ylim=c(10, 12)) lines(tulemused[2, ]) ``` ggplot polnud siiani vedu võtnud, püüdsin edasi juhiste järgi käia. Andmed pikale kujule ```{r } pikk=melt(tulemused) pikk ``` tulpadele uued nimed. Saadud maatriksiga võiks nagu rahule jääda. ```{r } names(pikk)=c("sugu", "semester", "tulemus") pikk ``` Õpetuses soovitatud käsk tööle, kuid esimese katse peale tuli hoopis veateade Error in aes(x = semester, y = tulemus, group = sugu, color = sugu) + : non-numeric argument to binary operator ```{r } #ggplot(pikk, aes(x=semester, y=tulemus, group=sugu, color=sugu)+geom_line()+geom_point()+theme_bw()) ``` Piilusin veidi õpetusi ning siis õnnestus joonis kokku saada juhul, kui aes-käsk läks mitte ggploti, vaid seal järel oleva geom_line käsu sisse. ```{r } ggplot(pikk)+geom_line(aes(x=semester, y=tulemus, group=sugu, color=sugu)) ```