janrems / APPR-2017

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

Uvoz html datoteke #1

Open janrems opened 7 years ago

janrems commented 7 years ago

Pozdravljeni, za svoj projekt sem ustrezne tabele našel le na eurostatu. Zanima me ali je dovolj da prenesem le tabelo v html formatu, ali jo moram izluščiti iz celotne strani, kot je naprimer narejeno za primer občin. Poizkušal sem slednje vendar imam težavo, ker je glava tabele ločena (znotraj svoje značke) od preostalega dela tabele. Na vašem primeru in na primerih sošolcev je uporabljena sledeča koda html_nodes(xpath="//table[@class='wikitable sortable']") %>%.[[1]] Pri xpathu je če razumem prav navedena značka, ki vsebuje tabelo, ki jo želimo izluščiti. Pri svoji spletni strani imam težave pri določitvi ustrezne značke. Zanima pa me tudi kaj pomeni .[[1]]. Spodaj imate link moje tabele. Hvala za odgovor. Lp. Jan Rems

http://ec.europa.eu/eurostat/tgm/table.do?tab=table&init=1&language=en&pcode=tec00114&plugin=1

jaanos commented 7 years ago

Če pogledaš v izvorno kodo strani, vidiš, da so podatki zbrani v tabeli z atributom id="contenttable", imena držav pa so v tabeli z atributom id="fixtable". Tako bo potrebno podatke dobiti iz teh tabel - namesto @class torej podaš @id z ustrezno vrednostjo atributa. Značka je tukaj še vedno table.

S .[[1]] pobereš prvi element seznama - pika tukaj predstavlja vhod v veriženje, torej izhod funkcije html_nodes. Navadno sicer pri veriženju podaš funkcijo, ki dobi vhod kot prvi argument, če pa začneš izraz s piko, se bo ta nadomestila z vhodom. Še tretja možnost veriženja je, da podaš kodo med zavitima oklepajema - tedaj se bodo vse pike nadomestilo z vhodom (torej kot da bi imel funkcijo, katere edini vhodni argument je pika).

jaanos commented 7 years ago

Vidim, da si uspel prebrati tabelo s podatki - treba jo bo še združiti z državami, pretvoriti v obliko tidy data in vrednosti pretvoriti v številke (lahko uporabiš funkcijo parse_number iz knjižnice readr s parametrom na = ":", da ti pravilno interpretira dvopičja kot manjkajoče podatke). Pri branju tabele držav daj funkciji html_table še parameter header = FALSE, da ne bo prvega vnosa razumelo kot ime stolpca. Dve razpredelnici (ali več) lahko po stolpcih združiš s funkcijo cbind.

V svojem programu ne vključuj ukazov install.packages, saj ne želiš, da bi se knjižnice nameščale ob vsakem prevajanju poročila. Da ti bo prevedlo poročilo, pobriši del, ki je ostal iz vzorca - boš sproti potem dodajal svojo vsebino. Lahko tudi izpišeš del katere izmed uvoženih razpredelnic oziroma iz njih izrišeš kakšen graf (primera sta že v poročilu).

Še to sem opazil: v APPR-2017.Rproj je nastavljeno kodiranje znakov windows-1250. Glede na to, da imaš v svojih programih kodiranje znakov UTF-8, v izogib morebitnim problemom svetujem, da odpreš projekt APPR-2017.Rproj (lahko kar klikneš nanj v seznamu datotek v RStudiu) in potem pod Tools / Project Options / Code Editing pri Text encoding izbereš UTF-8.

janrems commented 7 years ago

Imam še eno vprašanje. Pri tabeli socialno ogroženih pred transferji imam kategoriji spol in starost. V prvotnih tabeli sem imel pri spolu poleg parametrov moški, ženska še možnost skupno(total). Enako je bil pri starosti poleg treh starostnih intervalov še skupni parameter. Pri oblikovanju v tidy-data ste mi svetovali, da se vrednosti pri total znebim. Sedaj, ko želim podatke analizirati, bi seveda rabil večinoma nerazdrobljene podatke (se pravi skupne ali pa kvečjemu ločeno po moških in ženskah za vse starosti, ter obratno ločeno po starostih vendar za vse spole). Da pa bi uspel izračunati (brez skupnih vrednosti) te kategorije, bi potreboval natančno demografsko strukturo prebivalstva za države skozi leta. Torej, ali lahko raje obdržim in uporabim skupne podatke?

jaanos commented 7 years ago

Če je tako in podatki za "skupaj" niso enostavna vsota podatkov za spol (ali kaj podobnega), jih lahko seveda obdržiš.