TrafelaT18 / APPR-2019-20

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

projektna naloga #1

Open TrafelaT18 opened 4 years ago

TrafelaT18 commented 4 years ago

Problem imam, ker ne morem združiti 1. in 2. tabele zaradi različnega števila stolpcev in me zanima ali dodam stolpce z vrednostmi 0 ali tudi pri 1. tabeli uporabim le leta 2010, 2013 in 2016? Če menite, da je bolje da dodam stolpce me zanima kako bi to lahko naredila, saj bi to morala narediti za kar veliko stolpcev.

jaanos commented 4 years ago

Najprej naj opomnim, da branje podatkov trenutno ne deluje, saj imaš datoteke z njimi v mapi uvoz/podatki/, nanje pa se sklicuješ, kot da bi bile v mapi podatki/ oziroma v vrhnji mapi repozitorija. Svetujem, da podatke premakneš v mapo podatki/, pri tem pa poskrbi tudi, da imaš v RStudiu odprt projekt - če desno zgoraj piše Project: (None), klikni tja, izberi Open Project..., nato pa poišči datoteko APPR-2019-20.Rproj v mapi svojega repozitorija (tako bo deloval tudi git znotraj RStudia). Tako bo delovni imenik nastavljen na vrhnjo mapo projekta, na vse datoteke pa se potem sklicuješ iz te mape.

Pri uvozu poskrbi tudi za ustrezno kodiranje znakov - v tvojem primeru lahko pri vseh treh datotekah uporabiš Windows-1250. Prav tako bo za ustrezen uvoz potrebno podati znak, ki označuje manjkajoče podatke (-, N ali z). Podatke bo po uvozu potrebno spraviti v obliko tidy data - ker imaš v imenih stolpcev navedenih več dimenzij, si lahko pomagaš s funkcijo separate iz knjižnice tidyr, npr.

uvoz1 <- read_csv("podatki/povprecni_pridelek.csv",
                  locale=locale(encoding="Windows-1250"), na="-") %>%
  rename(kmetijska.kultura=`KMETIJSKE KULTURE`) %>% # presledki so nezaželeni v imenih stolpcev
  gather("leto.regija", "kolicina", -kmetijska.kultura, na.rm=TRUE) %>% # pretvorba v tidy data
  separate(leto.regija, c("leto", "regija"), "(?<=[0-9]) ") %>% # delimo po presledku za številko
  mutate(leto=parse_number(leto)) # leto pretvorimo v števila

uvoz3 <- read_csv("podatki/cene.csv", # v enem od stolpcev ni podatkov, zato bo treba eksplicitno podati tipe:
                  col_types=cols(`VRSTA ŽIVINE`=col_character(), .default=col_integer()),
                  locale=locale(encoding="Windows-1250"), na=c("N", "z")) %>%
  rename(vrsta.zivine=`VRSTA ŽIVINE`) %>%
  gather("leto.vrsta.regija", "stevilo", -vrsta.zivine, na.rm=TRUE) %>%
  separate(leto.vrsta.regija, c("leto", "vrsta", "regija"),
           " (?=[A-ZČŠŽ])(?!Slovenija)") %>% # delimo po presledku pred veliko črko, razen pred besedo "Slovenija"
  mutate(leto=parse_number(leto))

Pri določanju ločil se tukaj uporablja tehnika lookaround, ki omogoča iskanje vzorca z regularnimi izrazi glede na njegovo okolico.

Kolikor vidim, so vsi podatki, ki jih imaš v datoteki zivina.csv, že vključeni v datoteki cene.csv, tako da prejšnje ni potrebno uvažati (sumarne podatke - za celotno Slovenijo - pa lahko vedno izračunaš). Imaš torej dve razpredelnici z različnimi tipi podatkov, tako da združevanje ni potrebno.