Closed maxfilip98 closed 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".
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?
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.
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