vidamaver / 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 podatkov iz spletnih strani #1

Closed vidamaver closed 7 years ago

vidamaver commented 7 years ago

Pri uvozu podatkov iz spletne strani sem naletela na težavo in sicer iz tabele želim izbrisati stolpca "stevnik" in "opis", ker ju ne rabim, vendar ne vem, kako naj to storim.

Lep pozdrav

jaanos commented 7 years ago

Stolpce brišeš tako, da jih prepišeš z NULL, npr.

tabela$stevnik <- NULL
tabela$opis <- NULL
vidamaver commented 7 years ago

V tabeli Zracne_emisije_po_drzavah me zanima, kako lahko podatke v stolpcu "kolicina_v_tonah" spremenim tako, da bodo številsko lepe oblike in ne oblike: 1.177852e+07 ?

vidamaver commented 7 years ago

Poleg zgornjega me zanima tudi, zakaj mi ob kliku na source vrne napako:

source('~/R/APPR-2017/uvoz/uvoz1.R') Error in colnames<-(*tmp*, value = c("leto", "drzava", "tip_izpusta", : 'names' attribute [6] must be the same length as the vector [5],

tabelo pa mi naredi tako kot je treba?

jaanos commented 7 years ago

Številke v eksponentni notaciji naj te zaenkrat ne motijo - gre samo za to, da se ne prikaže preveliko število. Možno bi bilo sicer stolpec deliti z npr. 1000000 - potem bi seveda imela števila v milijonih ton (če je to seveda smiselno).

Napako dobiš zato, ker imaš očitno v razpredelnici 5 stolpcev, podaš pa 6 imen.

Še nekaj opomb: na začetku programa uvoz1.R sta se na začetek prikradli črki vv, zaradi česar se program ustavi že v naslednji vrstici. Poleg tega nikjer nimaš uvoza razpredelnice Zracne_emisije_po_drzavah, ji pa vseeno skušaš nastaviti imena stolpcev.

Svetoval bi še, da v imenih stolpcev nimaš posebnih znakov, kot je ^ oziroma kateregakoli operatorja v R-ju, pa tudi presledkov in šumnikov ne (lahko imaš pike ali podčrtaje namesto presledkov). Pazi tudi na velikost črk pri podajanju datotek - tvoj program uvoz1.R ima končnico z veliko začetnico, zato to upoštevaj tudi v poročilu - nekateri sistemi so namreč na to občutljivi. Del poročila iz vzorca lahko zaenkrat pobrišeš (boš kasneje dodala svojo vsebino), da se ti bo poročilo prevedlo.

vidamaver commented 7 years ago

Ko uvažam tabelo iz Eurostata, torej Zracne_emisije_po_drzavah, mi vse podatke vrne v stolpec leto, v vseh ostalih stolpcih pa mi napiše NA. Kaj delam narobe?

vidamaver commented 7 years ago

Tabelo Zracne_emisije_po_drzavah sem uvozila malo drugače. Ali je sedaj tabela2 v redu?

jaanos commented 7 years ago

Ker imaš v številih vejice kot ločila tisočic, bo potrebno ustrezno popraviti locale:

sl <- locale("sl", decimal_mark = ".", grouping_mark = ",")

Za branje raje uporabi funkcijo read_csv iz knjižnice readr, pri čemer bo potrebno povedati še, da dvopičja pomenijo manjkajoče podatke:

tabela2 <- read_csv("podatki/Zracne_emisije_po_drzavah.csv", locale = sl, na = ":")

Da bo tabela res v obliki tidy data, pobriši še vrstice, ki se nanašajo na združene podatke (podatki za Evropsko unijo in za vsa področja industrije).

vidamaver commented 7 years ago

Vrača mi tudi sledečo napako:

source('~/R/APPR-2017/uvoz/uvoz1.R') Parsed with column specification: cols( 2008 = col_integer(), European Union (28 countries) = col_character(), Carbon dioxide = col_character(), Activities of extraterritorial organisations and bodies = col_character(), Tonne = col_character(), 880 = col_number() )

Kaj bi lahko bilo narobe?

vidamaver commented 7 years ago

Mislim, da mi je izbris vrstic uspel. Še vedno pa mi javlja zgoraj skopirano napako.

jaanos commented 7 years ago

Tole ni napaka, ampak samo obvestilo, kako je bila razpredelnica uvožena. Sicer pa bo bolje, če vrstice brišeš tako:

tabela2 <- read_csv(file = "podatki/Zracne_emisije_po_drzavah.csv", locale = sl, na = ":") %>%
  filter(GEO != "European Union (28 countries)")

Podatki za celotno Evropsko unijo se namreč pojavijo tudi kasneje (za druga leta). Na podoben način (lahko kar nadaljuješ z veriženjem) se lahko znebiš še vrstic, ki se nanašajo na vsa področja industrije.

Še to: ukaza View ne vključuj v program, saj ne želiš, da bi se ti razpredelnica prikazala vsakič, ko prevedeš poročilo. V poročilu pazi, da je koda ločena od besedila - vsa koda se nahaja med vrsticama

```{r ime_bloka, parametri}

in

```

Besedilo bo tako na belem ozadju, koda pa na sivem. Na začetku poročila si očitno pobrisala vrstico, ki označuje konec bloka kode. Svetujem, da ukazov library nimaš v samem poročilu - v ta namen je vključen program libraries.r. Če potrebuješ kakšno dodatno knjižnico, bo najbolje, če jo tam vključiš, pa bo na voljo pri prevajanju poročila. Prav bo prišlo tudi pri sprotnem izvajanju kode - pred začetkom izvajanja enostavno poženi vrstico, kjer kličeš libraries.r, pa se bodo naložile vse potrebne knjižnice.

vidamaver commented 7 years ago

Najlepša hvala. Mislim, da sem popravila in bi moralo biti sedaj v redu.

jaanos commented 7 years ago

Sedaj izgleda v redu. Kot sem napisal zgoraj, iz poročila pobriši še del, ki je ostal iz vzorca, da ga boš lahko prevedla (gumb Run Document). Potem bo ta zadeva rešena in jo lahko zapreš z gumbom Close issue oziroma Close and comment, če zraven še kaj napišeš.

jaanos commented 7 years ago

V poročilu pobriši vse pod vrsticama

head(tabela_povrsin)
```

Če postaviš # pred vsako vrstico, to v RMarkdownu ni komentar, pač pa se ta znak uporablja za naslove. Zato je potrebno te vrstice dejansko pobrisati - če jih boš potrebovala kasneje, lahko vedno pogledaš v vzorčno različico poročila.