BraMira / Mirjam-Spela

Projekt pri predmetu OPB 2015/2016
0 stars 4 forks source link

Aplikacija 2 #8

Closed spelapovrzenic closed 8 years ago

spelapovrzenic commented 8 years ago

Pozdravljeni! Hvala za prejšnje komentarje. Sedaj me pa še zanima pri aplikaciji 2 (v kometarju v ui i n serverju sva označili določeno aplikacijo da se ve katera je katera). Torej definirala sem vse inpute na tak način kakor ste rekli, pa me zanima če je ok če je kje kaka napaka (pri meseci in glmesto nevem če je ok). Ter:

place_capital <- left_join(tbl.in_country,tbl.country, by=c("country"="name"),copy=TRUE) %>% select(place,capital)

to sem že dobila, ampak samo še nekako povezavo kako vključiv v napadi1?

Že v naprej hvala za odgovore! Lp

spelapovrzenic commented 8 years ago

;)

jaanos commented 8 years ago

Bom šel kar po točkah.

V pull requestu #9 so sedaj ti filtri narejeni. Trenutno se izpišejo vsi stolpci združene tabele - s pomočjo funkcije select lahko potem izbereš želene stolpce, ki jih želiš prikazati. Izgleda mi, kot da se vsak napad v tej tabeli pojavi natanko enkrat (torej noben ni v več kot enem kraju oziroma kraju z več kot eno religijo). Če bi bilo potrebno kaj združevati, potem lahko z group_by našteješ vse stolpce, ki so enolično določeni z attack_id (vključno s tem - select potem ni potreben), potem pa s summarise() podaš še stolpce, ki se izračunajo za vsak napad (npr. seznam krajev, kjer se je zgodil napad).

Kot si ugotovila, funkcija filter torej filtrira podatke glede na podan pogoj - v SQL torej ustreza pogojem pri WHERE. Funkcija arrange poskrbi za urejanje podatkov in torej ustreza ORDER BY - podaš ji lahko seznam stolpcev, po katerih želiš urejati (če hočeš urejati padajoče, uporabiš desc(stolpec)),

spelapovrzenic commented 8 years ago

Hvala za vse prejšnje odgovore! Imam pa še samo dve vprašanji ki se nanašata na server v 6.Shiny:

vse <- tbl.religion %>% select(religion_id)
tiste<- nap %>% select(religion_id)
manjkajo <- which(! tiste %in% vse)
nap <- rbind(nap, data.frame(religija = manjkajo, stevilo = rep(0, length(manjkajo))))

samo nekaj malega mora biti narobe a ne najdem napake.

nap <- nap %>% group_by(religion_id, religija = name, max_deaths,injured) %>% 
      summarise() %>% group_by(religion_id, religija) %>%
      summarise(stevilo = sum(max_deaths,injured)) %>% data.frame()

ta sum ne dela oziroma nekako drugače se mora uporabljati? torej kako se napiše da naj sešteje te dve vrednosti za posamezno religijo?

Hvala in lp :)

jaanos commented 8 years ago

Glede na to, da so religije fiksne, bo najbolje, če kar takoj potegneš seznam (za ostalimi tabelami):

religije <- tbl.religion %>%
    transmute(religion_id, religija = name, stevilo = 0) %>% data.frame()

transmute deluje podobno kot select, le da omogoča tudi izpeljavo novih podatkov iz obstoječih (select tako ne bi omogočal, da podamo konstanten stolpec). Potem lahko izbrane vrstice te tabele dodamo k podatkom:

    if (nrow(nap) > 0) {
      manjkajo <- which(! religije$religion_id %in% nap$religion_id)
      nap <- rbind(nap, religije[manjkajo,])
    } else {
      nap <- religije
    }

Tukaj se ločita primera, ko imamo kakšne podatke in torej dodajamo neprazni razpredelnici, in primeru brez podatkov, ko enostavno povsod prikažemo ničle.

Funkcija sum sprejema samo en argument. Če hočeš torej sešteti vrednosti dveh stolpcev, enostavno uporabi sum(max_deaths + injured).

Mimogrede, ne pozabi vključiti še knjižnice ggplot2 v server.R. Da ti bodo vnosna polja pravilno delovala, morajo imeti različna imena - trenutno imaš dve polji z imenom kontinent in dve polji z imenom mesec.