TomasRode / APPR-2018-19

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

Preoblikovanje datoteke #2

Open TomasRode opened 5 years ago

TomasRode commented 5 years ago

Težavo imam s preoblikovanjem tabele WBD, pri uvozu podatkov. Razlicne vrednosti v prvem stolpcu bi morale biti posamezni stolpci, stolpci 2000:2017 pa bi morali iti pod stolpec 'leto'. S funkcijo melt mi tega ni uspelo narediti. Naj napravim samo toliko različnih tabel kot je vrednosti in v vsaki posebej naredim melt?

jaanos commented 5 years ago

Svetujem, da za branje podatkov uporabljaš funkcije read_* (s podčrtajem, ne s piko) iz knjižnice readr. Pri tem lahko podaš tudi, katere vrednosti naj razume kot NA, tako da se bodo števila pravilno uvozila:

WBD <- read_csv("podatki/WBD_izobrazevanje.csv", na="..", n_max=258) %>%
  melt(id.vars=1:4, variable.name="leto", value.name="vrednost") %>%
  mutate(leto=parse_number(leto))

Poleg tega je bilo potrebno podati tudi število uvoženih vrstic, saj je na koncu nekaj komentarjev, in pa leta (iz imen stolpcev) pretvoriti v števila. Pazi tudi, da podaš ustrezno pot do datoteke, ki se nahaja v mapi podatki (delovni imenik se v RStudiu pri nalaganju projekta nastavi na vrhnjo mapo repozitorija - tega ne spreminjaj).

Opažam še, da ostale datoteke CSV v mapi podatki niso ustrezno oblikovane - sklepam, da si jih odprl v Excelu in nato shranil. Namesto tega svetujem, da datoteke še enkrat pobereš in jih neposredno shraniš, brez predhodnega odpiranja v Excelu. Potem lahko datoteke prebereš z read_csv, pri čemer nastaviš, da se uporablja decimalna pika:

PISAmat <- read_csv("podatki/PISA_math.csv", locale=locale(decimal_mark="."))

Pri navajanju imen datotek pazi na velikost črk, saj so nekateri sistemi na to občutljivi. Tako podajaš ime datoteke PISA_reading.csv, v mapi podatki pa imaš datoteko Pisa_reading.csv, zato naj tako piše tudi v kodi. Svetujem sicer, da te tri razpredelnice združiš v eno, saj gre pri vseh za isto obliko, stolpec INDICATOR pa že pove, za katere podatke gre. Iz podatkov tudi izloči povprečja (koda OAVG):

PISA <- rbind(PISAmat, PISArea, PISAsci) %>% filter(LOCATION != "OAVG")
TomasRode commented 5 years ago

Hvala, zdaj deluje. Imam pa še eno vprašanje: v PISA tabeli imam podatke za dekleta, fante in skupaj. Ali se znebim skupnih podatkov? Nisem prepričan, ker nimam številk o razmerju med fanti in dekleti. Lahko pa vzamem 52/48, kot to velja v splošnem.

jaanos commented 5 years ago

Če nimaš točnih podatkov o številu vsakih, potem lahko skupne podatke pustiš (če jih boš seveda potreboval).