Valchy94 / APPR-2014-15

Repozitorij z gradivi za predmet Analiza podatkov s programom R v študijskem letu 2014/15
MIT License
0 stars 0 forks source link

Glavni program in uvoz #2

Closed jaanos closed 9 years ago

jaanos commented 9 years ago

V glavnem programu (projekt.r) kličeš vzorčna programa za naslednji fazi - tega sedaj nočeš, zato ju zakomentiraj.

V datotekah CSV imaš v podatkih decimalno vejico, zato ti številke uvozi kot nize. Tako lahko pri uvozih podajaš parameter dec = ",", ali pa namesto read.table uporabljaš kar read.csv2, ki privzeto uporablja decimalno vejico (in tudi podpičja za ločila med celicami).

Valchy94 commented 9 years ago

Sem popravila oboje.

Vendar imam problem pri definiranju funkcije v programu xml.r in sicer mi pri klicanju izpiše napako: Error in UseMethod("xpathApply") : no applicable method for 'xpathApply' applied to an object of class "NULL": Te napake ne znam odpraviti in lahko tudi, da ni edina.

jaanos commented 9 years ago

uvoz.r le kliči v glavnem programu - trenutno ti ta ne naredi nič. Nekje bo treba tudi vključiti program lib/xml.r (spet s source) - najraje kar v uvoz.r, kjer lahko potem kličeš funkcije iz tega programa.

V funkciji uvozi.podatkim v xml.r podajaš absolutno pot do datoteke Povprecnodelo_moski.html. Tega ne počni, saj na različnih računalnikih ta pot ne bo enaka. Namesto tega podaj relativno pot:

url.podatkim <- "podatki/Povprecnodelo_moski.html"

Enkrat ko imaš tabelo, hočeš dobiti vrstice. Tu se ti zalomi, ker vrstice (<tr>) niso neposredno pod tabelo, ampak je vmes še <tbody> oziroma <thead> (ta je na koncu, čeprav je glava prikazana na vrhu!). Tako lahko poiščemo kar vse značke <tr> znotraj naše tabele (to bi sicer bil problem, če bi imeli gnezdene tabele, ampak tukaj tega ni), potem pa podatke dobivamo od prve do predzadnje vrstice:

vrsticem <- getNodeSet(tabelem[[1]], ".//tr")
seznamm <- lapply(vrsticem[1:length(vrsticem)-1], stripByPath, "./td")

Sedaj lahko narediš matriko. Imena stolpcev lahko dobiš iz zadnje vrstice:

colnames(matrikam) <- gsub("\n", " ", stripByPath(vrsticem[[length(vrsticem)]], ".//th"))

Da dobiš števila, bo treba porezati stvari v oklepajih (lahko režemo od prvega oklepaja naprej):

return(data.frame(apply(gsub("\\(.*$", "", matrikam[,2:7]),
                          2, as.numeric), row.names=matrikam[,1]))
Valchy94 commented 9 years ago

Aha, zdaj pa deluje. Najlepša hvala za pomoč