library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.2.1     ✓ purrr   0.3.3
## ✓ tibble  2.1.3     ✓ dplyr   0.8.4
## ✓ tidyr   1.0.2     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.4.0
## ── Conflicts ────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
tekstid <- read_csv("http://www.tlu.ee/~kais/Kvant_digihum/keeletasemed240.csv")
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   kood = col_character(),
##   eksam = col_character(),
##   keeletase = col_character(),
##   sugu = col_character(),
##   haridus = col_character(),
##   kodakondsus = col_character(),
##   elukoht_kov = col_character()
## )
## See spec(...) for full column specifications.
lai_tabel <- tekstid %>% group_by(keeletase) %>% summarise_if(is.numeric, mean)

pikk_tabel <- gather(lai_tabel, tunnus, vaartus, -keeletase)

Eesti keele tasemeeksami sooritajate osakaal haridustasemeti:

tekstid %>% group_by(haridus) %>%
  summarise(kogus = n(), osakaal = 100 * n()/nrow(tekstid) %>% round()) %>%
  filter(haridus != 0)
## # A tibble: 4 x 3
##   haridus              kogus osakaal
##   <chr>                <int>   <dbl>
## 1 alg/põhiharidus         65    27.1
## 2 keskeri/kutseharidus    43    17.9
## 3 keskharidus             40    16.7
## 4 kõrgharidus             90    37.5
tekstid %>% group_by(haridus) %>%
  summarise(kogus = n(), osakaal = 100 * n()/nrow(tekstid) %>% round()) %>%
  filter(haridus != 0) %>% ggplot(aes(x = "", osakaal, fill = haridus)) +
  geom_col() + coord_polar("y") + xlab("") + 
  theme(axis.text = element_blank(), axis.ticks = element_blank(), panel.grid = element_blank()) +
  xlab("") + ylab("") + ggtitle("Eesti keele tasemeeksami tegijate osakaal haridustasemeti")

Eksamisooritajate jaotumine kodakondsuse järgi:

tekstid %>% group_by(kodakondsus) %>%
  summarise(kogus = n(), osakaal = 100 * n()/nrow(tekstid) %>% round()) %>%
  filter(kodakondsus != 0) %>% mutate(kodakondsus = 
                                        factor(kodakondsus, levels = kodakondsus[rev(order(kogus))])) %>% 
  ggplot(aes(kodakondsus, osakaal)) + geom_col(fill = "darkred") + 
  theme(axis.text.x=element_text(angle = 90))

Tekstide jaotumine pikkuse järgi keeletasemeti:

tekstid %>% ggplot(aes(sonad, keeletase)) + geom_point()

Seos kõigi tekstis leiduvate sõnade ja unikaalsete sõnade vahel:

tekstid %>% ggplot(aes(sonad, lemmad)) + geom_jitter()

Tekstisõnade ja unikaalsete sõnade arvu seos keeleosustasemeti:

tekstid %>% ggplot(aes(sonad, lemmad)) + geom_jitter() + facet_wrap(~keeletase)

Sõnade arvu ja lausepikkuse vahel ei ole nii selget seost:

tekstid %>% ggplot(aes(sonad, lpikkus)) + geom_jitter()

Kui mitmuslikud käändsõnad muutuvad sagedamaks, siis ainsuslikud muutuvad harvemaks:

tekstid %>% ggplot(aes(yld_mitm, yld_ains)) + geom_jitter()

Sama nähtust illustreeriv tulpdiagramm:

pikk_tabel %>% filter(tunnus == "yld_ains" | tunnus == "yld_mitm") %>%
  ggplot(aes(tunnus, vaartus, fill = keeletase)) + geom_col(position= position_dodge()) +
  scale_fill_manual(values = c("A2" = "#8b96f0", "B1" = "#b68dc2", "B2" = "#8bd0f0", "C1" = "#ffd66b"))

Käändevormide osakaalud A2- ja B2-tasemel

tibble(kaane = c("omastav", "osastav", "seesütlev", "seestütlev", "alaleütlev",
                 "alalütlev", "kaasaütlev"), A2 = c(0.0692, 0.0637, 0.0352, 0.00368, 0.0247, 0.0474, 0.0132),
       B1 = c(0.0598, 0.0646, 0.0311, 0.0203, 0.0220, 0.0365, 0.0178)) %>%
  ggplot(aes(x = A2, y = B1, label = kaane)) + geom_text(aes(hjust = 0, x = A2 + 0.002)) + geom_point() +
  xlim(0, 0.09) + ylim(0, 0.09)

Käändevormide osakaalud B2- ja C1-tasemel

tibble(kaane = c("omastav", "osastav", "seesütlev", "seestütlev", "alaleütlev",
                 "alalütlev", "saav", "kaasaütlev"), B2 = c(0.0985, 0.0747, 0.024, 0.0112, 0.0224,
                                                            0.0357, 0.00644, 0.0187),
       C1 = c(0.119, 0.0799, 0.0321, 0.0250, 0.0163, 0.0335, 0.0204, 0.0123)) %>%
  ggplot(aes(x = B2, y = C1, label = kaane)) + geom_point() + 
  geom_text(aes(hjust = 0, x = B2 + 0.002)) + xlim(0, 0.120) + ylim (0, 0.120)