Closed jernejbanevec closed 7 years ago
Najbolje bo, če delaš kar s funkcijami iz knjižnice rvest
:
library(rvest)
xml <- file("podatki/UNdata_Export_20170503_165055282.xml") %>% read_xml()
records <- xml %>% xml_nodes(xpath="//record")
fields <- records[[1]] %>% xml_nodes(xpath="./field") %>% xml_attr("name")
data <- sapply(fields[-length(fields)], function(x) {
sapply(records, . %>% xml_nodes(xpath=sprintf("./field[@name='%s']", x)) %>%
xml_contents() %>% as.character())
}) %>% data.frame()
Poiskali smo torej vse značke record
, iz prve dobili imena stolpcev, potem pa sestavili razpredelnico tako, da smo podatke za vsak stolpec (brez zadnjega, kjer so samo opombe) pridobili iz značk field
z ustrezno vrednostjo atributa name
. V dobljeni razpredelnici so vsi stolpci znakovni, tako da je še potrebno opraviti ustrezne pretvorbe.
Super, to deluje. Nisem popolnoma razumel vseh korakov, tako da vas bom prosil na naslednjih vajah za obrazložitev. Najlepša hvala.
Pozdravljeni, ko s funkcijo iz knjižnice XML uvozim datoteko (datoteko pobrano v .xml obliki iz spletne strani http://data.un.org/Data.aspx?q=abortion&d=POP&f=tableCode%3a17), dobim samo strukture poimenovane in zato jih nemorem oštevilčit, saj tudi ko poizkušam s funkcijo xmlRoot mi ne dela, saj če prav razumem je to vse skupaj označeno kot en velik prostor.