library(tidyverse)
## ── Attaching packages ───────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 2.2.1     ✔ purrr   0.2.4
## ✔ tibble  1.4.2     ✔ dplyr   0.7.4
## ✔ tidyr   0.8.0     ✔ stringr 1.2.0
## ✔ readr   1.2.0     ✔ forcats 0.2.0
## ── Conflicts ──────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()

1 Correct answers: group_by

1.1. dplyr-paketti sisältää datan starwars. Kukin rivi on yksi elokuvan hahmo. Miten saat eri sukupuolten mediaanipituuden käyttämällä funktioita group_by, summarise ja median?

dplyr::starwars %>% group_by(gender) %>% summarise(pituus = median(height, na.rm = TRUE))
## # A tibble: 5 x 2
##   gender        pituus
##   <chr>          <int>
## 1 female           166
## 2 hermaphrodite    175
## 3 male             183
## 4 none             200
## 5 <NA>              97

1.2. dplyr-paketti sisältää datan starwars. Kukin rivi on yksi elokuvan hahmo. Miten luot dataan uudeksi muuttujaksi otuksien kotimaailmakohtaisen keskiarvopainon funktioilla group_by, mutate ja mean?

dplyr::starwars %>% group_by(homeworld) %>% summarise(paino = mean(mass, na.rm = TRUE))
## # A tibble: 49 x 2
##    homeworld      paino
##    <chr>          <dbl>
##  1 Alderaan        64.0
##  2 Aleen Minor     15.0
##  3 Bespin          79.0
##  4 Bestine IV     110  
##  5 Cato Neimoidia  90.0
##  6 Cerea           82.0
##  7 Champala       NaN  
##  8 Chandrila      NaN  
##  9 Concord Dawn    79.0
## 10 Corellia        78.5
## # ... with 39 more rows

1.3. dplyr-paketti sisältää datan starwars. Kukin rivi on yksi elokuvan hahmo. Miten saat eri sukupuolten mediaanipituuden hiusten väriän mukaan käyttämällä funktioita group_by, summarise ja median?

dplyr::starwars %>% group_by(gender,eye_color) %>% summarise(pituus = median(height, na.rm = TRUE))
## # A tibble: 26 x 3
## # Groups:   gender [?]
##    gender        eye_color pituus
##    <chr>         <chr>      <dbl>
##  1 female        black      196  
##  2 female        blue       166  
##  3 female        brown      163  
##  4 female        hazel      178  
##  5 female        red, blue   96.0
##  6 female        unknown     NA  
##  7 female        white      178  
##  8 female        yellow     168  
##  9 hermaphrodite orange     175  
## 10 male          black      188  
## # ... with 16 more rows

1.4. Käy ensin läpi sivun http://courses.markuskainu.fi/utur2018/data.html video ja tallennusvaiheet. Lataa ess-data objektiksi ess, ryhmittele se maan mukaan ja laske kullekin maalle yleisen luottamuksen keskiarvo (koodi ´ppltrst`)

ess <- haven::read_dta("../datasetit/ESS8e01.stata/ESS8e01.dta")
ess %>%
  group_by(cntry) %>%
  summarise(ppltrst = mean(ppltrst, na.rm = TRUE))
## # A tibble: 18 x 2
##    cntry ppltrst
##    <chr>   <dbl>
##  1 AT       5.45
##  2 BE       5.25
##  3 CH       6.04
##  4 CZ       5.20
##  5 DE       5.40
##  6 EE       5.76
##  7 FI       6.80
##  8 FR       4.58
##  9 GB       5.41
## 10 IE       5.59
## 11 IL       6.23
## 12 IS       6.50
## 13 NL       6.06
## 14 NO       6.96
## 15 PL       4.58
## 16 RU       5.01
## 17 SE       6.57
## 18 SI       4.61

1.5. Tuo R:ään QOG-projektin Basic-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "basic", data.type = "time-series"). Valitse datasta Transparency index (koodi diat_ti) ja laske tästä kunkin Pohjoismaan keskiarvo vuosilta 2000-2010. (funktio mean(x, nr.rm = TRUE)

dat <- rqog::read_qog(which.data = "basic", data.type = "time-series")
## Local file not found. 
##  Downloading QoG qog_bas_ts_jan18.csv data, 
##  from http://www.qogdata.pol.gu.se/data/qog_bas_ts_jan18.csv 
##  in file: /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
dat %>%
  filter(cname %in% c("Finland","Sweden","Norway","Denmark","Iceland"),
         year %in% 2000:2010) %>%
  group_by(cname) %>%
  summarise(diat_ti = mean(diat_ti, na.rm = TRUE))
## # A tibble: 5 x 2
##   cname   diat_ti
##   <chr>     <dbl>
## 1 Denmark    73.3
## 2 Finland    77.8
## 3 Iceland    71.2
## 4 Norway     75.5
## 5 Sweden     78.1

1.6. Tuo R:ään QOG-projektin Basic-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "basic", data.type = "time-series"). Valitse datasta Transparency index (koodi diat_ti) ja laske tästä Pohjoismaiden yhteinen keskiarvo kullekin vuodelle 2000-2010. (funktio mean(x, nr.rm = TRUE)

dat <- rqog::read_qog(which.data = "basic", data.type = "time-series")
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
dat %>%
  filter(cname %in% c("Finland","Sweden","Norway","Denmark","Iceland"),
         year %in% 2000:2010) %>%
  group_by(year) %>%
  summarise(diat_ti = mean(diat_ti, na.rm = TRUE))
## # A tibble: 11 x 2
##     year diat_ti
##    <int>   <dbl>
##  1  2000    71.8
##  2  2001    73.2
##  3  2002    73.6
##  4  2003    75.4
##  5  2004    75.4
##  6  2005    74.8
##  7  2006    76.8
##  8  2007    76.4
##  9  2008    75.8
## 10  2009    77.2
## 11  2010    76.6

2 Correct answers: visualise

2.1. dplyr-paketti sisältää datan starwars. Tee hajontakuvio (scatterplot), jossa hahmon pituus on x-akselilla ja paino y-akselilla

ggplot(dplyr::starwars, aes(x=height,y=mass)) + geom_point()
## Warning: Removed 28 rows containing missing values (geom_point).

2.2. dplyr-paketti sisältää datan starwars. Tee hajontakuvio (scatterplot), jossa hahmon pituus on x-akselilla, paino y-akselilla ja pisteen väri on hahmon laji.

ggplot(dplyr::starwars) + geom_point(aes(x=height,y=mass,color=species))
## Warning: Removed 28 rows containing missing values (geom_point).

2.3. Tuo R:ään QOG-propektin OECD-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "oecd", data.type = "time-series"). Piirrä funktiolla geom_line() viivakuvio, jossa x-akselilla on vuosi ja y-akselilla YK:n ihnimillisen kehityksen indeksi ja viivan väri on maan nimen mukaan.

dat <- rqog::read_qog(which.data = "oecd", data.type = "time-series")
## Local file not found. 
##  Downloading QoG qog_oecd_ts_jan18.csv data, 
##  from http://www.qogdata.pol.gu.se/data/qog_oecd_ts_jan18.csv 
##  in file: /tmp/RtmpVECRVw/rqog/qog_oecd_ts_jan18.csv
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_oecd_ts_jan18.csv
ggplot(dat, aes(x = year, y = undp_hdi, color = cname)) + geom_line()
## Warning: Removed 1622 rows containing missing values (geom_path).

2.4. Tuo R:ään QOG-propektin OECD-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "oecd", data.type = "time-series"). Valitse datasta Suomi. Piirrä funktiolla geom_col() tolppakuvio, jossa x-akselilla on vuosi ja y-akselilla YK:n ihnimillisen kehityksen indeksi. Anna kuviolle otsikko “Inhimillisen kehityksen indeksi Suomessa”

dat <- rqog::read_qog(which.data = "oecd", data.type = "time-series")
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_oecd_ts_jan18.csv
ggplot(dat %>% filter(cname == "Finland"), aes(x = year, y = undp_hdi)) + geom_col() + labs(title = "Inhimillisen kehityksen indeksi Suomessa")
## Warning: Removed 46 rows containing missing values (position_stack).

2.5. Tuo R:ään QOG-propektin basic-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "basic", data.type = "time-series"). Valitse datasta Yhdysvallat, Kiina ja Venäjä. Piirrä funktiolla geom_col() tolppakuvio, jossa x-akselilla on vuosi ja y-akselilla YK:n ihnimillisen kehityksen indeksi ja eri maat paneleissa “facetoituina” (funktio facet_wrap()). Anna kuviolle otsikko “Inhimillisen kehityksen indeksi”

dat <- rqog::read_qog(which.data = "basic", data.type = "time-series")
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
kuvadata <- dat %>% filter(cname %in% c("Canada","United States","Russia"),
                           !is.na(undp_hdi))
ggplot(kuvadata, aes(x = year, y = undp_hdi)) + geom_col() + labs(title = "Inhimillisen kehityksen indeksi") + facet_wrap(~cname)

*2.6. Tuo R:ään QOG-propektin basic-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "basic", data.type = "time-series"). Miten saat tehtyä tällaisen kuvan http://courses.markuskainu.fi/utur2018/harjoitukset/kuvat/ggplot2_geom_line_qog.png*

dat <- rqog::read_qog(which.data = "basic", data.type = "time-series")
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
kuvadata <- dat %>% filter(cname %in% c("Canada","United States","Russia"),
                           !is.na(undp_hdi))
p <- ggplot(kuvadata, aes(x = year, y = undp_hdi, color = cname)) +
  geom_point() + geom_line() +
  labs(title = "Inhimillisen kehityksen indeksi")
p

*2.7. Tuo R:ään QOG-propektin basic-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "basic", data.type = "time-series"). Miten saat tehtyä tällaisen kuvan http://courses.markuskainu.fi/utur2018/harjoitukset/kuvat/ggplot2_geom_line_bkt.png*

dat <- rqog::read_qog(which.data = "basic", data.type = "time-series")
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
p <- ggplot(dat, aes(x = year, y = gle_cgdpc, group = cname)) +
  geom_point() + geom_line() +
  labs(title = "bruttokansantuote kansalaista kohden")
p
## Warning: Removed 5715 rows containing missing values (geom_point).
## Warning: Removed 5499 rows containing missing values (geom_path).

*2.8. Tuo R:ään QOG-propektin basic-datan aikasarja komennolla dat <- rqog::read_qog(which.data = "basic", data.type = "time-series"). Miten saat tehtyä tällaisen kuvan http://courses.markuskainu.fi/utur2018/harjoitukset/kuvat/ggplot2_geom_histogram_qog.png*

dat <- rqog::read_qog(which.data = "basic", data.type = "time-series")
## Reading cache file /tmp/RtmpVECRVw/rqog/qog_bas_ts_jan18.csv
kuvadata <- dat %>% filter(year == 2011) %>% select(cname,gle_cgdpc)
p <- ggplot(kuvadata, aes(x = gle_cgdpc)) + geom_histogram() +
  labs(title = "Bruttokansantuote kansalaista kohden vuonna 2011 eri maissa")
p
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 18 rows containing non-finite values (stat_bin).

*2.9. Lataa ess-data objektiksi ess. Piirrä siitä tolppakuvio tapausten määrästä joka näyttä tältä: http://courses.markuskainu.fi/utur2018/harjoitukset/kuvat/ggplot2_geom_bar_ess.png*

dat <- haven::read_dta("../datasetit/ESS8e01.stata/ESS8e01.dta")
p <- ggplot(dat, aes(x = cntry)) + geom_bar() +
  labs(title = "Otoskoko ESS-aineiston rundilla 8")
p

*2.10. Lataa ess-data objektiksi ess. Piirrä siitä tolppakuvio otoksen iän maittaisista keskiarvoista joka näyttä tältä: http://courses.markuskainu.fi/utur2018/harjoitukset/kuvat/ggplot2_geom_col_geom_text_ess.png*

dat <- haven::read_dta("../datasetit/ESS8e01.stata/ESS8e01.dta")
kuvadata <- dat %>% group_by(cntry) %>% summarise(agea = round(mean(agea, na.rm = TRUE),1))
p <- ggplot(kuvadata, aes(x = cntry, y = agea, label = agea)) + geom_col() + geom_text() +
  labs(title = "ESS kierros 8: eri maiden otosten iän keskiarvo")
p

*2.11. Lataa ess-data objektiksi ess. Piirrä siitä tolppakuvio tapausten määrästä joka näyttä tältä: http://courses.markuskainu.fi/utur2018/harjoitukset/kuvat/ggplot2_geom_scatter_geom_text_ess.png*

dat <- haven::read_dta("../datasetit/ESS8e01.stata/ESS8e01.dta")
kuvadata <- dat %>% group_by(cntry) %>%
  mutate(health = ifelse(health %in% c(7,8,9), NA, health),
         ppltrst = ifelse(ppltrst %in% c(77,88,99), NA, ppltrst)) %>%
  summarise(health = mean(health, na.rm = TRUE),
            ppltrst = mean(ppltrst, na.rm = TRUE))
p <- ggplot(kuvadata, aes(x = ppltrst, y = health, label = cntry)) +
  geom_point() + geom_text(nudge_y = .03) +
  labs(title = "ESS kierros 8: luottamus ihmisiin ja koettu terveys",
       subtitle = "Luottamus: mitä suurempi arvo sitä korkeampi luottamus
Terveys: mitä pienempi arvo sitä parempi terveys",
       caption = "Data: European Social Survey")
p