Closed LonjaTT closed 8 years ago
Ali lahko naložiš trenutno verzijo na GitHub, da vidim, kaj gre narobe pri uvozu s spletne strani?
Kar se tiče podatkov za Slovenijo, bo najlažje, če jih pretvoriš v obliko tidy data, saj jih bo tako lažje združiti. Tako lahko npr. že pri uvozu uporabiš funkcijo melt
iz knjižnice reshape2
library(reshape2)
stevilomuzejev <- read.csv2("podatki/stmuzejevnapreb.csv", dec = ".",
header = FALSE, na.strings = "...",
col.names = regije) %>%
melt(id.vars = "Leto", variable.name = "Regija",
value.name = "Stevilo.muzejev")
Tukaj je bilo potrebno dodati parameter dec = "."
, saj imaš v datoteki CSV decimalne pike.
Podobno narediš še z ostalima razpredelnicama, potem pa lahko vse tri združiš s full_join
(tako ohraniš morebitne vrstice, ki se ne pojavijo v vseh razpredelnicah):
skupaj <- stevilomuzejev %>% full_join(obcasnerazstave) %>% full_join(obiskovalci)
sem poskusila, vendar mi pri skupaj, javi napako: index out of bounds
V kodi, ki jo imaš v uvoz/README.md
(seveda jo premakni v uvoz.r
), si zadnjo razpredelnico poimenovala obiskmuzejev
, tako da tako popravi tudi pri združevanju.
Mimogrede, opažam, da si v libraries.r
uvozila tudi knjižnico MASS
. To smo uvozili na vajah, da smo lahko delali s podatki UScrime
, za sam projekt pa je ne potrebuješ. Glede na to, da ta knjižnica vsebuje tudi funkcijo select
, ki pa ni ista kot tista iz knjižnice dplyr
, svetujem, da knjižnico MASS
odstraniš.
kako uvozim zemljevid? poskušala sem uvoziti zemljevid slovenije, vendar mi ni uspelo?
Poglej si primer z vaj. Funkcijo uvozi.zemljevid
imaš na voljo, če uvoziš lib/libraries.r
(kot že imaš v poročilu), funkcijo pretvori.zemljevid
pa si skopiraj iz primera.
Meni to še vedno ni jasno `obcine <- uvozi.zemljevid("http://e-prostor.gov.si/fileadmin/BREZPLACNI_POD/RPE/OB.zip", "OB/OB", encoding = "Windows-1250")
zem <- ggplot() + geom_polygon(data = muzejiinrazstavisca, aes(x=long, y=lat, group=group, fill=x2014), color= "red")+scale_fill_gradient(low="#3F7F3F", high="#00FF00")+guides(fill=guide_colorbar(title = "Muzeji 2014")) print(zem)` Rada bi naredila zemljevid muzejev po občinah v letu 2014.
Najbolje bo, če podatke pretvoriš v obliko tidy data. Pri uvozu ne pozabi na ustrezno kodiranje znakov. Poleg tega izpusti še parameter row.names
, da bodo imena občin v svojem stolpcu. Ker se imena občin v podatkih in na zemljevidu ne ujemajo povsem, jih bo treba prilagoditi (izpustiti dvojezična imena in pobrisati presledke okrog pomišljaja):
library(gsubfn)
uvozi.muzeje <- function(){
return(read.csv("podatki/muzejiinrazstavisca.csv", dec = ".", na.strings ="-",
header = FALSE, col.names = leta, fileEncoding = "Windows-1250"))
}
muzeji <- uvozi.muzeje() %>% melt(variable.name = "Leto", value.name = "Stevilo")
levels(muzeji$Obcina) <- levels(muzeji$Obcina) %>% {gsub(" - ", "-", .)} %>%
strapplyc("^([^/]+)") %>% unlist()
muzeji$Leto <- muzeji$Leto %>% as.character() %>% strapplyc("([0-9]+)") %>%
unlist() %>% as.numeric()
Sedaj lahko narišeš podatke za leto 2014 (ali pa katero drugo leto) tako, da svoje podatke pridružiš zemljevidu (right_join
je potreben, da se ohranijo vse občine, tudi če zanje nimaš podatkov):
ob <- pretvori.zemljevid(obcine)
zem <- ggplot() + geom_polygon(data = muzeji %>% filter(Leto == 2014) %>%
right_join(ob, by = c("Obcina" = "OB_UIME")),
aes(x=long, y=lat, group=group, fill=Stevilo),
color= "red") +
scale_fill_gradient(low="#3F7F3F", high="#00FF00") +
guides(fill=guide_colorbar(title = "Muzeji 2014"))
print(zem)
Seveda v končni fazi premakni ukaz print
na želeno mesto v poročilu.
imam dve tažavi: 1) imam težave pri uvozu tabele s podatki za EU iz spletne strani (pri podatkih)
2) ko poskušam združiti tabelce za Slovenijo po letih mi ne uspe.