library(tidyverse) voistlejad=read_csv("http://minitorn.tlu.ee/~jaagup/kool/java/kursused/19/r/naited/1031/spordipaev_andmed.csv"); scale(voistlejad %>% select(-isik)) mean(voistlejad$sadameetrit) sd(voistlejad$sadameetrit) #keskväärtusest erinevus standardhälvetes (voistlejad$sadameetrit-mean(voistlejad$sadameetrit))/ sd(voistlejad$sadameetrit) #Osakaal suurimast voistlejad$sadameetrit/max(voistlejad$sadameetrit) #Osakaal suurima ja vähima vahest abi=voistlejad$sadameetrit-min(voistlejad$sadameetrit) abi/max(abi) v_norm=voistlejad %>% mutate_if(is.numeric, function(tulp){(tulp-min(tulp))/(max(tulp)-min(tulp))}) v_norm #Arvutage normaliseeritud tabel nõnda, et väärtusi #näidatakse erinevust tulba keskmisest väärtusest standardhälvetes v_norm_2=voistlejad %>% mutate_if(is.numeric, function(tulp){(tulp-mean(tulp))/sd(tulp)}) v_norm_2 asukohad=tibble(isik=v_norm$isik, x=0, y=0) asukohad nurgad=sapply(1:nrow(v_norm), function(nr) {nr*2*pi/nrow(v_norm)}) asukohad$x=cos(nurgad) asukohad$y=sin(nurgad) asukohad asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text() spordikaugus<- function(nr1, nr2){ andmed1=slice(v_norm %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(v_norm %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 return (sqrt(sum(vahed ** 2))) } joonisekaugus<- function(nr1, nr2){ andmed1=slice(asukohad %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(asukohad %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 return (sqrt(sum(vahed ** 2))) } nihuta<- function(nr1, nr2, vahe){ andmed1=slice(asukohad %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(asukohad %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 andmed1=andmed1+vahe*vahed*0.1 asukohad[nr1, "x"]=andmed1[1] asukohad[nr1, "y"]=andmed1[2] asukohad } paigutaPaar<- function(nr1, nr2){ #esimest teise suhtes vahe=joonisekaugus(nr1, nr2)-spordikaugus(nr1, nr2) print(vahe) return(nihuta(nr1, nr2, vahe)) } paigutaIsik <- function(nr1){ for(nr in 1:nrow(asukohad)){ if(nr!=nr1){ asukohad=paigutaPaar(nr1, nr) } } return(asukohad) } paigutaIsikud <- function(){ for(nr in 1:nrow(asukohad)){ asukohad=paigutaIsik(nr) } return(asukohad) } asukohad=paigutaIsik(1) asukohad=paigutaIsikud() asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text() asukohad=paigutaPaar(6, 2) asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text()