NabergojV / APPR-2015-16

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

html podatki, ne izpiše podatkov #5

Closed NabergojV closed 8 years ago

NabergojV commented 8 years ago

Rada bi sestavila vektro, ki bi vseboval imena stolpcev html tabele:


imenastolpcev<-grep("var dataValues",html) %>% 
  strapplyc('var dataValues="(=1>)([a-z]+ )[0-9]+\\w+</TH>$"')%>% .[[1]]
jaanos commented 8 years ago

Ali lahko napišeš še, kako si dobila html - da lahko pogledam, kaj točno se dogaja?

Sicer pa mi je nekoliko sumljiv niz (=1>) - kolikor mi je znano, ta nima posebnega pomena, tako da dejansko iščeš natanko niz =1> in si ga zapomniš.

Če imaš dejansko HTML tabelo, raje uporabi html_nodes, da prideš do značk <th>, in html_text, da iz njih pobereš besedilo (potem pa ga lahko s strapplyc naprej obdeluješ).

jaanos commented 8 years ago

Aha, vidim, da imaš v zadnjem commitu. Tabelo lahko dobiš takole:

library(rvest)
html <- file("podatki/preseljevanje-v-tujino-po-regijah") %>% read_html()
tabela <- html %>% html_nodes(xpath="//table[1]") %>%
  html_table(fill = TRUE) %>% .[[1]] %>%
  apply(1, function(x) c(x[is.na(x)], x[!is.na(x)])) %>% t()

Ker ima tabela celice, ki sežejo čez več vrstic, je html_table ne prebere pravilno in nekatere vrstice prikaže kot krajše, zato je to potrebno popraviti z apply in dobljeni rezultat transponirati nazaj v želeno obliko.

Seveda bo tukaj treba še urediti tabelo, da bo imela ustrezne vrstice, ter odstraniti odvečne vrstice in pretvoriti nize v števila.

NabergojV commented 8 years ago

Hvala ponovno!

NabergojV commented 8 years ago

Še tole bi prosila: v html uvoženi tabeli mi ne delajo šumniki.. kje dodam encoding da popravim to?

jaanos commented 8 years ago

Encoding dodaš ukazu read_html, npr.

html <- file("podatki/preseljevanje-v-tujino-po-regijah") %>% read_html(encoding = "UTF-8")

Če še vedno ne bi delovalo, lahko encoding naknadno nastaviš imenom stolpcev in vsakemu stolpcu posebej, npr.

Encoding(names(tabela2)) <- "UTF-8"
Encoding(tabela2$regija) <- "UTF-8"
NabergojV commented 8 years ago

Najlepša hvala, sem nastavila samo za stolpec regija, ker ni delalo z:

%>% read_html(encoding = "UTF-8")