#CSV andmete kasutamine #Kõigepealt vaja need tabelarvutusprogrammis CSVna salvestada #Võib Notepadi või mõne muu lihtsa tekstiredaktoriga #igaks juhuks üle kontrollida, et mis tegelikult faili jõudis lapsed=read.table("d:/R/lapsed1.csv", sep=",", header=TRUE) lapsed=read.table(file.choose(), sep=",", header=TRUE) file.choose() lapsed mean(lapsed$Pikkus) install.packages("XML") library(XML) ilm=xmlToDataFrame(xmlParse("http://www.ilmateenistus.ee/ilma_andmed/xml/observations.php")) head(ilm) #esimesed kirjed ilm$relativehumidity=as.numeric(as.character(ilm$relativehumidity)) #tulba andmed arvudeks hist(ilm$relativehumidity) andmed=read.table("http://minitorn.tlu.ee/~jaagup/kool/java/kursused/16/r/naited/lapsed2.csv", sep=",", header=TRUE) arvud=as.matrix(andmed[, 2:4]) #Enne koma tühi, st. võetakse kõik read #esimeses tulbas olevaid nimesid ei võta. #Kasutatakse maatriksit, kus kõik tulbad ühte tüüpi (arvud) arvud arvud2=arvud #sama suur maatriks, kuhu normaliseeritud tulemusi arvutada for(tulbanr in 1:ncol(arvud)){ #käin muutujaga tulbanr läbi kõik tulbad lahutatud=arvud[,tulbanr]-min(arvud[,tulbanr]) #kaugused vähimast arvud2[, tulbanr]=lahutatud/max(lahutatud) } arvud2 koordinaadid=matrix(runif(nrow(arvud)*2), ncol=2) #kaks tulpa: x ja y. Arve iga inimese kohta kaks tükki #Tekitab igale inimesele xy koordinaatteljestikus juhusliku asukoha mõlemal teljel 0 ja 1 vahele #lähteasend koordinaadid sammukoef=0.01 #osakaal, kui palju andmete ja koordinaatide erinevusest ühe võrdlussammuga paika lükatakse a=1 b=2 #kahe võrreldava inimese reanumbrid # kaugus andmeid pidi vahed=arvud2[a, ]-arvud2[b, ] #erinevused tunnuste kaupa andmekaugus=sqrt(sum(vahed*vahed)) #ruutjuur erinevuste ruutude summast #kaugus koordinaate pidi vahed=koordinaadid[a,]-koordinaadid[b, ] #Vektor punktist b punkti a koordinaadikaugus=sqrt(sum(vahed*vahed)) kaugustevahe=koordinaadikaugus-andmekaugus andmekaugus koordinaadikaugus kaugustevahe b_uus=koordinaadid[b, ]+kaugustevahe*sammukoef*vahed koordinaadid[a, ] koordinaadid[b, ] b_uus koordinaadid[b,]=b_uus arvud2 vahed #prop.table(arvud, 2) #osakaal vastava veeru kogusummast ###puhtand sammukoef=0.01 for(i in 1:1000){ for(a in 1:nrow(arvud2)){ for(b in 1:nrow(arvud2)){ #Kõik inimeste erinevad paarid vahed=arvud2[a, ]-arvud2[b, ] #erinevused tunnuste kaupa andmekaugus=sqrt(sum(vahed*vahed)) #ontoloogiline kaugus vahed=koordinaadid[a,]-koordinaadid[b, ] #Vektor punktist b punkti a koordinaadikaugus=sqrt(sum(vahed*vahed)) #geograafiline kaugus kaugustevahe=koordinaadikaugus-andmekaugus koordinaadid[b,]=koordinaadid[b, ]+kaugustevahe*sammukoef*vahed } } } koordinaadid #multidimensionaalne skaleerimine (nonmetric?) #Mauri Kaipainen #plot(c(koordinaadid[1,]), c(koordinaadid[2, ])) plot(koordinaadid[,1], koordinaadid[, 2], xlim=c(-1, 1), ylim=c(-1, 1), type="n") text(koordinaadid[,1], koordinaadid[, 2], labels=andmed$Eesnimi) help(text) plot(1:5)