sarakovacic / APPR-2017-18

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

htm tabela #1

Closed sarakovacic closed 6 years ago

sarakovacic commented 6 years ago

Pozdravljeni! Ne vem kako naj uvozim tabelo, ki je shranjena na mojem računalniku kot html (torej nima linka). V mapi "podatki" je to datoteka regije.htm. Hvala za odgovor in lep pozdrav! Sara

jaanos commented 6 years ago

Uvoz iz datoteke HTML lahko narediš tako, da funkciji read_html podaš ime datoteke HTML.

Po branju tabele s html_table dobiš razpredelnico, ki ima za vsako leto stolpca za površino in število. Da jo spraviš v obliko tidy data, bo treba leta spraviti v stolpec, ostala pa bosta stolpca za površino in število. Najlažje bo, če pretvorbo z melt narediš za vsako podmnožico stolpcev posebej in nato dobljeni razpredelnici združiš z inner_join:

regije <- read_html("podatki/regije.htm", encoding = "Windows-1250") %>%
  html_node(xpath="//table") %>% html_table()
leta <- regije[1, ] %>% unlist()
stolpci <- regije[2, ] %>% unlist()
stolpci.povrsina <- grep("ha", stolpci)
stolpci.stevilo <- grep("kmetijskih", stolpci)
regije.povrsina <- regije[regije[, 1] == "Gozd", c(2, stolpci.povrsina)]
regije.stevilo <- regije[regije[, 1] == "Gozd", c(2, stolpci.stevilo)]
colnames(regije.povrsina) <- c("regija", leta[stolpci.povrsina])
colnames(regije.stevilo) <- c("regija", leta[stolpci.stevilo])
regije.tidy <- inner_join(melt(regije.povrsina, id.vars = "regija",
                               variable.name = "leto", value.name = "povrsina"),
                          melt(regije.stevilo, id.vars = "regija",
                               variable.name = "leto", value.name = "stevilo")) %>%
  mutate(leto = parse_number(leto),
         povrsina = parse_number(povrsina, na = "N"),
         stevilo = parse_number(stevilo, na = "N"))
Encoding(regije.tidy$regija) <- "UTF-8"

Svetoval bi sicer tudi, da izločiš sumarne podatke (tam, kjer je regija enaka SLOVENIJA) - opažam sicer, da se ti nekoliko razlikujejo od vsote posameznih podatkov v vsakem letu, tako da bi jih morda bilo koristno spraviti v drugo razpredelnico.

sarakovacic commented 6 years ago

Pozdravljeni! Sedaj razumem postopek branja tabele iz HTML, vendar koda ne deluje pravilno... R javlja napako, da tabela regije.tidy ne obstaja, prav tako ne pokaže tabele regije. Verjetno mi manjkajo katere knjižnice (ali paketi)?
Hvala za odgovor! Sara

jaanos commented 6 years ago

Meni deluje, če poženem samo uvozpodatkov.R. Ali ti kakšno napako javi že prej (npr. pri definiciji razpredelnice regije.tidy)?