marushezz / 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

Uvoz in risanje #1

Closed jaanos closed 9 years ago

jaanos commented 9 years ago

Pri uvozu podatkov pazi na to, da navajaš imena datotek z isto velikostjo črk, kot je pravo ime datoteke. Tako imaš datoteko BRUTOSLO.csv - točno tako ime uporabi tudi pri uvozu. Nekateri sistemi so namreč občutljivi za velikost črk.

Pri risanju tortnega diagrama ti nekatere oznake poreže. Morda lahko rešiš ta problem z vstavljanjem novih vrstic v imena (znak za novo vrstico dobiš z "\n"), ampak bo verjetno lažje, če tudi tukaj pobereš ven samo šifre. To lahko narediš tako, da lblsdobiš kot

lbls <- gsub("[^A-Z]*([A-Z]+).*", "\\1", BRUTOSLO[(458:468), "Dejavnosti"])

; torej pobereš ven prvi niz velikih črk (pri C si imela še "...od tega: ", kar tudi ne sodi na sliko).

V glavnem programu kličeš xml.r - to ni potrebno, saj si ga že vključila v datoteki uvoz.r (prav tako ni smiselno, saj tam ne kličeš nobene funkcije iz tega programa). Poskušaš klicati tudi porocilo.tex, kar pa ne bo šlo, saj to ni program v R-ju. Poročilo bo potrebno posebej prevesti.

Trenutno ti poročila ne prevede, za kar so krivi predvsem spletni naslovi. Te je potrebno navajati znotraj ukaza \url{}, za kar pa potrebuješ paket url:

\usepackage{url}

Poskrbi, da bo poročilo urejeno - uporabljaj npr. tabele (tabular), sezname (itemize, enumerate) in vse drugo, kar lahko narediš v LaTeXu. Slike so trenutno prevelike - potrebno bo podati širino:

\includegraphics[width=\textwidth]{../slike/graf.pdf}

Pred \textwidth lahko podaš faktor: če hočeš, da je tvoja slika široka za polovico strani, podaj width=0.5\textwidth. To bo sicer naredilo nekoliko manjše slike, saj si jih risala na A4. Svetujem torej, da pri risanju v PDF odstraniš možnost paper - potem bo PDF širok toliko, kolikor je široka sama slika, in bo z zgornjim ukazom široka ravno toliko, kot je široko besedilo v poročilu.

jaanos commented 9 years ago

Še to sem pozabil omeniti: iz poročila seveda odstrani tisti dve sliki, ki sta prišli iz vzorčnega programa, saj ju nimaš in ti tako poročila ne bo prevedlo.

marushezz commented 9 years ago

Mislim da sem nalogo zdaj popravila kot ste rekli, ste morda opazili še kaj za popravit?

jaanos commented 9 years ago

Pri vključevanju slik v poročilo dodaj še širino, da ne bodo štrlele čez rob besedila:

\includegraphics[width=\textwidth]{../slike/graf.pdf}

Morda lahko še poskrbiš, da bo vrstica Legenda za tortni graf na isti strani kot sama legenda (pred njo daš \newpage, da skoči na novo stran). Ampak s takimi malenkostmi se lahko ukvarjaš tudi kasneje.

marushezz commented 9 years ago

Spoštovani,

pri izdelavi zemljevida se mi je malo zataknilo, in sicer na zemljevidu so drugačna imena regij kot jih imam v tabeli ( na zemljevidu npr. Notranjsko-kraška, v tabeli Notranjsko.kraška) Ali se to da kako urediti ker bi rada iz tabele prikazala povprečja dodanih vrednosti v posamezni regiji za leto 2012( z različnimi odtenki barv). Imam pa še en problem v tabeli imam 2 regiji več kot na zemljevidu(Zahodna Slovenija in vzhodna Slovenija) naj ju izločim pri prikazu povprečij na zemljevidu?

Najlepša hvala za pomoč.

jaanos commented 9 years ago

Če se imena ne ujemajo čisto, to ni velik problem - v ta namen je priložena funkcija preuredi, ki naj bi pravilno preuredila, v kolikor se oba vektorja imen enako razporedita (torej, če urediš po abecedi, dobiš isto zaporedje regij tako iz tvojih podatkov kot iz zemljevida). Žal se je pri tej funkciji pripetila napaka, zaradi česar ta ne deluje pravilno v primeru, ko imaš en sam stolpec (kar boš potrebovala). Funkcija naj bo torej taka:

preuredi <- function(podatki, zemljevid) {
  nove.slo <- c()
  manjkajo <- ! nove.slo %in% rownames(podatki)
  M <- as.data.frame(matrix(nrow=sum(manjkajo), ncol=length(podatki)))
  names(M) <- names(podatki)
  row.names(M) <- nove.slo[manjkajo]
  podatki <- rbind(podatki, M)
  ord <- order(rownames(podatki))[rank(levels(zemljevid$NAME_1)[rank(zemljevid$NAME_1)])]
  out <- data.frame(podatki)[ord, ]
  if (ncol(podatki) == 1) {
    out <- data.frame(out)
    names(out) <- names(podatki)
    rownames(out) <- rownames(podatki)[ord]
  }
  return(out)
}

(sem jo še nekoliko popravil, da bo res delovalo pravilno).

Sedaj lahko s to funkcijo preurediš svoje podatke. Pri tem izpustiš vzhodno in zahodno Slovenijo (tudi celotno Slovenijo si seveda izpustila). Ker imaš podatke v vrstici, jo bo potrebno pred tem transponirati:

povprecje <- preuredi(apply(DODANAVRED[445, c(6:9, 11:18)], 1, c), slo)
min.povprecje <- min(povprecje, na.rm=TRUE)
max.povprecje <- max(povprecje, na.rm=TRUE)
norm.2012 <- (povprecje-min.povprecje)/(max.povprecje-min.povprecje)

Sedaj lahko iz norm.2012 dobiš barve - najbolje bo, če uporabiš rgb, kot smo pokazali na vajah (seveda določi barvo, preden rišeš zemljevid - trenutno jo imaš zakomentirano). Če boš hotela še legendo, lahko uporabiš spplot - v tem primeru bo dodajanje imen na zemljevid potekalo nekoliko drugače (glej spelapovrzenic/APPR-2014-15#7).

Še to: glede na to, da gre tukaj za nov problem, ki ni povezan s prejšnjim, bi se spodobilo, če bi zaprla trenutni issue (če je seveda vse razrešeno) ter odprla novega (ni treba zdaj tega narediti - boš pa vedela za naslednjič).