Open TrafelaT18 opened 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.
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.