Closed spelapovrzenic closed 8 years ago
Združevanje (po stolpcu z istim imenom) se najlažje naredi z inner_join
:
names(area.pop)[1] <- "Country" # po uvozu ostane odvečen presledek
drzave <- inner_join(area.pop, gl.mesta)
Ta ustreza navadnemu JOINu v SQL - na voljo so sicer tudi funkcije left_join
, right_join
in full_join
.
Seveda bo treba poskrbeti še za države, katerih imena se ne ujemajo. Najlažje jih dobiš z anti_join
(po tem, ko že popraviš ime stolpca):
anti_join(gl.mesta, area.pop)
anti_join(area.pop, gl.mesta)
Tako lahko pred združevanjem popraviš imena držav v eni od tabel, da se bodo popolnoma ujemala.
Mimogrede, v funkciji ustvari_area
je specificirano, naj se prva vrstica izpusti, zaradi česar pri površini manjka Afganistan. Poleg tega imata površino za Zahodno Saharo, glavnega mesta pa ne - odločita se, ali jo bosta izpustili, oziroma bosta na roke dodali glavno mesto (ali pa pustili, da ta vrednost manjka).
aha najlepša hvala sedaj je to urejeno. sedaj imam pa še eno vprašanje spet v https://github.com/BraMira/Mirjam-Spela/blob/master/Podatki/Uvoz1.R
namreč pri religijah, ko uvozim tabelo pride zelo grda saj državam nazačetku doda znak  in tudi povsod pri odstotkih. Kako je najlepši način da se tega znabim? hvala in lp
ter še en problem, link ki ga imam pri glavnih mestih, ne obstaja več oziroma je neka napaka.. ali je ok da (hvala bogu) sem že prej uvozila v csv in sedaj delam naprej s tem csvjem?
Neželenih znakov se najlažje znebiš tako, da pobereš samo želen podniz:
Encoding(religije$Country) <- "UTF-8"
religije$Country <- religije$Country %>% strapplyc("([a-zA-Z -]+)") %>%
sapply(. %>% .[[1]]) %>% trimws()
religije[,6] <- religije[,6] %>% strapplyc("([0-9.]+)") %>%
unlist() %>% as.numeric()
Pri državah zgornja koda pobere samo ime države, brez oklepajev.
Kar se tiče glavnih mest, lahko delaš naprej s CSV datoteko. Vseeno pusti povezavo do spletne strani zakomentirano, da bo jasno, od kod so prišli podatki. Izgleda sicer, da ima stran težave z bazo, tako da bodo to najbrž kmalu popravili.
najlepša hvala. Problem imam le, namreč pri Philippines mi nagaja, nemorem popraviti tako kot zgoraj, saj mi pri številih izpiše 11.00Â %[2][3] in nemore spremeniti
religije[,8] <- religije[,8] %>% strapplyc("([0-9.]+)") %>%
unlist() %>% as.numeric()
torej tisto [2][3] ga moti.
Hvala in lp
Torej nadaljujem zgornji issue, popravila sem encoding kar tako:
Encoding(religije$`Muslim%`) <- "UTF-8"
sedaj so stevilke boljše a vendar mi izpisuje še odstotke ter pri dveh podatkih dobim tak podatek (na wikipediji je bil tam vir)
11.00 %[2][3]
Kakšna pa je funkcija pa pusti samo številke, in izbriše vse od vključno predsledka naprej? Hvala in lp
Da se znebiš morebitnih drugih številk, lahko uporabiš podoben trik kot pri državah, torej da pobereš samo prvi ujemajoči podniz v posamezni celici:
religije[,8] <- religije[,8] %>% strapplyc("([0-9.]+)") %>%
sapply(. %>% .[[1]]) %>% as.numeric()
Najlepša hvala! Ter zanima me še samo to, sedaj so v tabeli nekateri stolpci kot številke (num), nekateri pa so chr. Kako doseči, da bo R vedel da so vsi stolpci od vključno 4. naprej da vsebujejo številke, torej da so num ?
str(religije) 'data.frame': 264 obs. of 20 variables: $ Country : chr "Burundi" "Comoros" "Djibouti" "Eritrea" ... $ Region : chr "Sub-Saharan Africa" "Sub-Saharan Africa" "Sub-Saharan Africa" $ Subregion : chr "Eastern Africa" "Eastern Africa" "Eastern Africa" "Eastern Africa" ... $ Population : chr "8 380 000" "730 000" "890 000" "5 250 000" ... $ Christian : chr "7 667 700" "3 650" "20 470" "3 302 250" ... $ Christian% : num 91.5 0.5 2.3 62.9 62.8 84.8 85.3 82.7 25.3 0.7 ... $ Muslim : chr "234 640" "717 590" "862 410" "1 921 500" ... $ Muslim% : num 2.8 98.3 96.9 36.6 34.6 9.7 3 13 16.7 98.6 ...
torej tistim ki sem zdaj popravljala odstotke so ok so num, ostale pa so chr. hvala in lp
Glede na to, da imaš presledke pri številkah, se bo teh treba znebiti pred pretvorbo v števila, npr.
religije$Population <- religije$Population %>% strsplit(split = " ") %>%
sapply(. %>% paste(collapse = "")) %>% as.numeric()
Pozdravljeni! Imam vprašanje, in sicer kako dati 2 tabeli v eno. V povezavi: https://github.com/BraMira/Mirjam-Spela/blob/master/Podatki/Uvoz1.R
sem že uvozila in naredila tabeli gl.mesta in area.pop in sedaj bi rada ti dve tabeli zdruzila v eno, saj za obe pove v kateri državi je kaj. Manjši problem pa je, ker nekatere države niso čisto enake. Kako odpraviti to težavo? In kako ju potem združiti v eno tabelo?
Že vnaprej se zahvaljujem za kakršnokoli pomoč! Špela