jernejbanevec / APPR-2017

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

Uvoz in poročilo #3

Closed jaanos closed 7 years ago

jaanos commented 7 years ago

Svetujem, da se izogibaš šumnikom in presledkom, pa tudi drugim posebnim znakom, kot npr. oklepaji ali $ (ali katerikoli R-jev operator) tako v imenih datotek kot tudi v imenih stolpcev, saj se s tem izogneš morebitnim težavam zaradi razlik v sistemih.

V datoteki consumer_price_index.csv je očitno prišlo do konflikta, ki ga nisi razrešil - tako imaš notri dve kopiji teh podatkov. Svetujem, da to datoteko še enkrat pridobiš z vira in prepišeš obstoječo datoteko. Za kodiranje znakov pri uvozu raje uporabi UTF-8, saj ima datoteka na začetku značko BOM, ki označuje, da gre za tako kodiranje. Namesto, da brišeš vsak stolpec posebej, raje uporabi funkcijo select iz knjižnice dplyr, s katero navedeš samo želene stolpce v želenem vrstnem redu. Celoten uvoz lahko potem narediš tako:

consumer.price.index <- read_csv("podatki/consumer_price_index.csv",
                                 col_names = c("i", "p", "i2", "DRZAVA", "i3", "i4", "i5", "i6",
                                               "LETO", "i7", "i8", "STA", "i9", "i10", "i11",
                                               "i12", "INDEX.CEN", "i13", "i14"),
                                 skip = 1, na = '-', locale = locale(encoding = "UTF-8")) %>%
  filter(p == "Consumer prices - all items", STA == "Index") %>% select(DRZAVA, LETO, INDEX.CEN)

Pretvorba v števila potem ne bo potrebna, saj so vsa leta številski ali manjkajoči podatki in se tip zazna že pri uvozu. Ukaza View ne vključuj v svoj program, saj ne želiš, da se ti uvožena razpredelnica pokaže vsakič, ko prevedeš poročilo.

Podobno lahko narediš tudi pri uvozu natalitete in povprečnih letnih plač - pazi edino na to, da je pri nataliteti znak za manjkajoče podatke dvopičje (tako bo tip spet že pravi ob uvozu). Uvoz iz XML ti trenutno ne deluje - ko definiraš data, imaš v naslednjih treh vrsticah na začetku znake + (očitno si kopiral iz konzole) - te pobriši, pa se bo ukaz ustrezno izvedel. Glede pretvorbe v števila glej #2 (lahko tudi kombiniraš s select).

Da ti bo prevedlo poročilo, pobriši del, ki je ostal iz vzorca - boš sproti potem dodajal svojo vsebino. Lahko tudi izpišeš del katere izmed uvoženih razpredelnic oziroma iz njih izrišeš kakšen graf (primera sta že v poročilu). V bloku kode iz vzorca, kjer sta se izpisali tabeli, na začetku sicer manjka še en znak ` - da je nekaj narobe, kaže to, da ozadje bloka ni sivo.

jernejbanevec commented 7 years ago

Zadeve sem popravil. Le zadnjega odstavka ne razumem popolnoma, na kateri blok katere kode se nanaša? Prav tako ne vem kako se mi splača vizualizirati podatke, če podatkov za točno vse iste države? Preuredim kodo uvoza, tako da mi izbere zgolj države za katere imam podatke? Ter ali naj prikažem vse podatke na istem grafu? Lep pozdrav

jaanos commented 7 years ago

Kot "blok kode" v poročilu so mišljeni deli med

```{r ime, ...}

in

```

Vmes imaš R-jevo kodo, ki se bo pri prevajanju poročila (Run Document) izvedla. Pri bloku kode z imenom razpredelnice (ki je ostal iz vzorca) na začetku manjka en znak `, zato ti ga RStudio ne zazna kot takega in ga ne obarva sivo. Kot rečeno, vsebino iz vzorca odstrani in nadomesti s svojo.

V poročilu tudi popravi imena programov, ki jih kličeš - iz imena programa povprecna_letna_placa.R si odstranil šumnike, tako da to posodobi; programa uvoz_st_splavov_sola.R nimaš - najbrž gre za uvoz_st_splavov_sola_zadnja.R. Glede na to, da imaš git, ni potrebe po takem poimenovanju, tako da bo najbolje, če ime datoteke spremeniš v skladu z imenom v poročilu.

Vseh podatkov vsekakor ni potrebno prikazati na istem grafu - teh je lahko tudi več; podatke lahko prikazuješ tudi na zemljevidih. Na grafih lahko prikažeš podatke skozi čas (za posamezno državo, ali pa za vse države skupaj); na zemljevidu lahko primerjaš podatke za različne države. Pri tem pazi, da bodo podatki primerljivi - npr. število splavov bi bilo smiselno prikazati glede na populacijo države.

Če boš svoje podatke izpeljeval iz več razpredelnic, poskrbi, da se bodo imena držav ujemala - v eni razpredelnici imaš tako kratice držav, tako da boš potreboval še eno vezno razpredelnico, ki ti pove, kateri državi ustreza katera kratica. Prav tako poskrbi, da se bodo imena ujemala z izbranim zemljevidom (glej npr. vidamaver#2).

Vsekakor pa naj grafov ne bo preveč. Seveda lahko sam izrišeš veliko grafov, a vsi najbrž ne bodo zanimivi (ali pa bodo med seboj podobni). V poročilo vključi tiste grafe in zemljevide, ki prikažejo kaj zanimivega - v besedilu tudi pojasni, kaj točno je iz njih videti, ter morda podaj kakšno interpretacijo prikazanega.

jaanos commented 7 years ago

Naj samo spomnim, da urediš zgornje, da boš pripravljen za predstavitev naslednji teden.

jernejbanevec commented 7 years ago

Bom uredil danes in jutri, ker sem imel precej drugega v šoli, tako da bom sedaj malo bolj aktiven. Se opravičujem za tako pozno urejanje in lep pozdrav.

jernejbanevec commented 7 years ago

Pozdravljeni, imam še eno vprašanje. Kako naj izberem podatke, ki jih želim narisati na grafu, če imam podanih za več let? Naj mi na zemljevidu izriše najnovejše?

jaanos commented 7 years ago

Načeloma naj velja, da v poročilu prikažeš samo zanimive grafe - torej take, da lahko zraven kaj poveš, kaj interpretiraš, se kaj novega naučiš. Če so podatki skozi leta podobni in nimaš nekega razloga, zakaj bi izbral neko točno določeno leto, bo najbrž res najbolje, da prikažeš najnovejše.

jernejbanevec commented 7 years ago

Dobro, bom si malo pogledal podatke in poizkušal najti kaj zanimivega. Rad bi predstavil podatke na zemljevidu, katerega sem že uvozil, vendar ne vem kako naj naredim da bi mi kot velikost pike nad državo prikazalo realno plačo in kot odtenek barve število rojstev. Kako naj to naredim? Je imel mogoče kdo kdaj podobnega?

jaanos commented 7 years ago

Nekaj takega bi šlo:

ggplot() + geom_polygon(data = evropa %>%
                          left_join(nominalno.stevilo.splavov %>% filter(LETO == 2005),
                                    by = c("name_long" = "DRZAVA")),
                        aes(x = long, y = lat, group = group, fill = NOM.STEVILO.SPLAVOV)) +
  geom_point(data = evropa %>% filter(long >= -25, long <= 40, lat >= 32, lat <= 79) %>%
               group_by(name_long) %>% summarise(x = mean(long), y = mean(lat)) %>%
               inner_join(real.wage %>% filter(LETO == 2005), by = c("name_long" = "DRZAVA")),
             aes(x = x, y = y, size = REALNA.PLACA)) +
  coord_map(xlim = c(-25, 40), ylim = c(32, 72))

Prvi del je običajen zemljevid, kjer prikazuješ nominalno število splavov. Zraven dodaš še točke z velikostjo glede na realno plačo - te postaviš na točko s povprečnimi koordinatami točk na robu vsake države. Pri izračunu teh se omejiš samo na dejansko prikazane točke, sicer bi pike za nekatere države odstopale zaradi odvisnih ozemelj, ki niso prikazana (pravzaprav je severna meja postavljena nekoliko višje, da pika za Norveško ne pade čez švedsko mejo).

jernejbanevec commented 7 years ago

Najlepša hvala, bom poskusil tako, le da bom zamenjal število splavov z nataliteto.

jernejbanevec commented 7 years ago

ProjectRmd bom pa uredil ko mi bo vse drugo delovalo in bom tako lahko zgolj nadomestil z mojimi podatki.

jernejbanevec commented 7 years ago

Če želim pa narediti naprimer 2 grafa, kje spremenim (najverjetneje dodam "col='red'") kodo da bi mi naprimer z odtenkom rdeče obarvalo število splavov, če imam modro število rojstev?

jaanos commented 7 years ago

Če prav razumem, želiš še en zemljevid, kjer privzeto modro lestvico nadomestiš z rdečo. Barvno lestvico lahko nadomestiš tako, da zemljevidu prišteješ funkcijo scale_fill_gradient (ali podobno) z ustreznimi barvami:

scale_fill_gradient(low = "#3C0000", high = "#F00000")
jernejbanevec commented 7 years ago

Zgornje sem popravil in uredil project.Rmd, tako da mi deluje. Kaj morem še narediti da bom pripravljen na jutrišnjo predstavitev?

jaanos commented 7 years ago

Izgleda v redu, tako da bom dodal povezavo do trenutnega commita dodal na repozitorij za zagovore. Če boš do predstavitve še kaj spreminjal, odpri issue na repozitoriju za zagovore, da posodobim povezavo - tam si preberi natančnejša navodila.