maxfilip98 / APPR-2017-18

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

tidy data pri obrestnih merah #1

Closed maxfilip98 closed 6 years ago

maxfilip98 commented 6 years ago

Spoštovani, zanima me kako bi lahko pri tabeli iz obrestnih mer naredil še zadnjih nekaj popravkov. Na mail ste mi že napisali, naj združim stolpca datumi in leta, ampak nevem kako točno bi to naredil. Naslednja težava se mi pojavi pri zadnjih dveh stolpcih, kjer mi funkcija parse_number ne deluje. Prav tako me zanima, kako lahko v zadnjih stolpcih naredim, da bi bila - kot NA in zakaj mi ne zazna minusa. Najlepša hvala

jaanos commented 6 years ago

Potem, ko določiš imena stolpcev za razpredelnico obrestne_mere, lahko narediš tako:

obrestne_mere <- obrestne_mere %>% tail(-2) %>% head(-1) %>%
  mutate(leta = parse_number(leta),
         datum = datum %>% strapplyc("^([^.]+)") %>% unlist()) %>% fill(leta) %>%
  mutate(datum = paste(datum, leta) %>% parse_date("%d %b %Y", locale = locale("en"))) %>%
  select(-leta) %>% melt(id.vars = "datum", variable.name = "podatek", value.name = "vrednost") %>%
  mutate(vrednost = gsub("[^0-9.]", "-", vrednost) %>% parse_number(na = "-"))

Najprej se torej izpustijo prvi dve in zadnja vrstica, nato pa se leta pretvorijo v števila, iz datumov pa izpusti vse od pike naprej (tabela ima namreč pri nekaterih datumih opombe). Nato funkcija fill iz knjižnice tidyr zapolni manjkajoča leta - tako lahko spravimo skupaj datum in leto in ga s parse_date iz knjižnice readr spravimo v obliko, s katero lahko R dela (take datume bo mogoče tudi risati na grafih). Leto je sedaj del datuma, zato ga lahko izpustimo.

Sklepam, da so vsi štirje številski stolpci na isti lestvici - v tem primeru je treba razpredelnico spraviti v obliko tidy data, kar opravi funkcija melt iz knjižnice reshape2 (parametra variable.name in value.name določata imeni novih stolpcev, tako da lahko izbereš kaj bolj primernega). Tako so vse številske vrednosti v enem stolpcu in lahko zanje poskrbimo hkrati. Ker se za minuse uporabljajo dolgi pomišljaji, jih (pravzaprav vse razen števk in pik) nadomestimo z običajnimi minusi, nato pa dobljene podatke pretvorimo v števila, pri čemer se sami minusi razumejo kot manjkajoče vrednosti.

Svetujem, da v imenih stolpcev ne uporabljaš minusov (pa tudi ne šumnikov, presledkov in ostalih posebnih znakov), saj se bodo ti v kodi razumeli kot odštevanje (zato ti trenutna koda ni delovala). V primeru, ko se bodo imena stolpcev pretvorila v vrednosti (npr. pri uporabi melt), si seveda lahko dovoliš, da so imena stolpcev "lepša".

maxfilip98 commented 6 years ago

Najlepša hvala, sedaj mi vse deluje. Imam pa še eno vprašanje, ali so sedaj moje tabele v tidy data obliki in sem končal s tem z 2. fazo? Ali moram še kaj spremeniti?

jaanos commented 6 years ago

Ja, podatki so zdaj v obliki tidy data. Iz poročila odstrani še del iz vzorca (od analize in vizualizacije naprej), da ti ga bo prevedlo. Svetujem tudi, da iz glave poročila odstraniš vrstico runtime: shiny, saj je zaenkrat ne potrebuješ - namesto Run Document se bo pojavil gumb Knit, ki bo poročilo prevedel v obliko HTML.

V poročilu lahko poskusiš narisati še kakšen graf iz svojih podatkov (lahko se zgleduješ po grafih iz vzorca). Boš sicer še sproti videl, kaj bo zanimivo prikazati in bo torej vključeno v končno različico poročila.