-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathREADME.Rmd
120 lines (89 loc) · 4.02 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
---
title: "Saborski transkripti scraper"
output: github_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(knitr.table.format = "html")
```
[RSelenium](https://github.com/ropensci/RSelenium) scraper za rasprave i zastupnička pitanja
Projekt sadržava funkcije potrebne za programski pristup podacima s edoc.sabor portala. Trenutno je moguće pristupati saborskim raspravama i zastupničkim pitanjima.
Saborske rasprave za 5.,6.,7.,8. i 9. saziv dostupne su u CSV formatu u folderu _CSV_. Opis datoteka:
* _rasprave_saziv_N.csv_ = zaglavlja rasprava (kolona **ID** je identifikator rasprave)
* _transkripti_saziv_N.csv_ = transkripti rasprava (kolona **Rasprava_ID** je veza na zaglavlje)
Projekt je nastao kao nadogradnja postojećeg scrapera u sklopu [Open Data Day 2018 hackathona](https://www.meetup.com/HrOpen/events/247705753/)
Izvor podataka: http://edoc.sabor.hr/
Datum pristupanja: 2018-03-04
**Napomena:** Neke se izjave na izvoru podataka pojavljuju više puta pod različitim raspravama. Potrebno je dodatno napraviti deduplikaciju prema govorniku i izjavi.
## Primjer učitavanja podataka
```{r getdata, echo=TRUE, message=FALSE, cache=TRUE, cache.vars=c('rasprave_8','transkripti_8')}
# load libs
library(tibble)
library(ggplot2)
library(dplyr)
library(ggthemr) # stiliziranje plotova, nije nuzno
library(magrittr)
# definiraj gdje su zipani podaci
url <- "https://github.com/rodik/Sabor/raw/master/CSV/saziv_8_csv.zip"
# download zip file containing transcript data, save it to the working directory
if (!file.exists("saziv_8.zip")) {
download.file(url = url, destfile="saziv_8.zip")
}
# procitaj zaglavlja rasprava
rasprave_8 <- read.table(unz("saziv_8.zip", "rasprave_saziv_8.csv"),
header=T, quote = "\"", sep=";",
encoding = "UTF-8", stringsAsFactors = F)
# procitaj transkripte rasprava
transkripti_8 <- read.table(unz("saziv_8.zip", "transkripti_saziv_8.csv"),
header=T, quote="\"", sep=";",
encoding = "UTF-8", stringsAsFactors = F)
# pretvori u tibble
rasprave_8 <- as_data_frame(rasprave_8)
transkripti_8 <- as_data_frame(transkripti_8)
```
Provjera učitanih tablica:
```{r describe, echo=TRUE, message=FALSE, dependson='getdata'}
rasprave_8
transkripti_8
```
## Primjer obrade i vizualizacije podataka
Osnovnim grupiranjem moguće je dobiti broj izjava prema npr. zastupničkom klubu:
```{r plots, echo=FALSE, message=FALSE, warning=TRUE, dependson='getdata', echo=TRUE}
# grupiraj podatke
grupirani_po_klubu <- transkripti_8 %>%
mutate( # ako ne postoji zastupnicki klub napisi N/A
ZastupnickiKlub = if_else(ZastupnickiKlub=="",'N/A', ZastupnickiKlub)
) %>%
group_by(ZastupnickiKlub) %>% # grupiraj po klubu
summarise(BrojIzjava = n()) # izracunaj broj izjava prema klubu
# postavi temu za plotove
ggthemr('dust')
# napravi barplot
grupirani_po_klubu %>%
ggplot(aes(x = reorder(ZastupnickiKlub, BrojIzjava), y = BrojIzjava)) +
geom_bar(stat = 'identity') +
coord_flip() +
ylab('Broj izjava') +
xlab('Zastupnički klub')
```
## Primjer pretrage prema riječima
Filtriranjem kolone _Transkript_ moguće je dohvatiti samo one izjave koje sadržavaju određeni pojam:
```{r filt, echo=FALSE, message=FALSE, warning=TRUE, dependson='getdata', echo=TRUE}
# dohvati sve izjave u kojima se spominje 'reforma' u bilo kojem obliku
filtrirani <- transkripti_8 %>%
filter( # filtriranje prema sadrzaju
grepl("reform", Transkript)
) %>%
group_by(Osoba) %>% # grupiraj prema Osobi
summarise(BrojIzjava = n()) %>% # izracunaj broj izjava
arrange(desc(BrojIzjava)) %>% # sortiraj prema broju izjava
head(12) # uzmi samo prvih 12 s najvise izjava zbog cisceg plota
# napravi barplot
filtrirani %>%
ggplot(aes(x = reorder(Osoba, BrojIzjava), y = BrojIzjava)) +
geom_bar(stat = 'identity') +
coord_flip() +
xlab('Broj izjava') +
ylab('Osoba') +
ggtitle('Broj izjava u kojima se spominje riječ "reforma"')
```