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

tezave z funkcijo gather #1

Open admira05 opened 4 years ago

admira05 commented 4 years ago

Pozdravljeni, probala sem na podoben nacin, kot smo delali na vajah, urediti stolpce tabele z funkcijo gather , vendar mi ne zazna. Cilj je naredit tabele na podobno kot prvo (data). Prosim za pomoc.

Lp

jaanos commented 4 years ago

Problem se pojavi, ker uporabljaš operatorjem %>% po nasavitvi imena stolpca s colnames - tako se posreduje le ime in ne celotna razpredelnica.

Ena možnost je, da stolpce preimenuješ z rename, npr.

data1 <- read_csv2("podatki/ods_st_akt.csv", locale=locale(encoding="Windows-1250"),
                   skip=2, na=c("", "...") ) %>%
  rename(drzava.prihodnjega.bivalisca=`DRŽAVA PRIHODNJEGA PREBIVALIŠČA`) %>%
  gather(key="leto.status", value="stevilo", -SPOL, -drzava.prihodnjega.bivalisca) %>%
  separate(leto.status, c("leto","status"), "(?<=[0-9]) ") %>%
  mutate(leto=parse_number(leto))

Tukaj želiš ohraniti tudi stolpec SPOL, tako da ga je potrebno podati pri gather.

Druga možnost je, da preimenuješ s colnames, nato pa nadaljnje operacije izvajaš na spremenjeni razpredelnici:

data2 <- read_csv2("podatki/notranje.selitve.csv", locale=locale(encoding="Windows-1250"),
                   skip=2,  na=c("", "...", "-"))
colnames(data2)[1] <- "regija"
data2 <- data2 %>%
    gather(key="leto.regijav", value="stevilo", -regija) %>%
    separate(leto.regijav, c("leto", "regijav"), "(?<=[0-9]) ") %>%
    mutate(leto=parse_number(leto),
           regija=gsub("e( |$)", "a\\1", regija) %>% substring(3),
           regijav=gsub("o( |$)", "a\\1", regijav) %>% substring(2))

Tukaj sem dodal še - za manjkajoče podatke, da se števila pravilno uvozijo, ter popravil ime stolpca leto.regijav pri gather. Poleg tega se pri regijah odstrani sklanjatev (e-ji oziroma o-ji pred presledkom ali koncem niza se zamenjajo z a) in predlog (odstranijo se prve tri oziroma dve črki). Tako bo mogoče podatke združevati z drugimi, kjer imaš regije.