kpykc / voting_analysis

R-script to generate statistics of MPs' votings

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#Voting_analysis Скрипт R для аналізу результатів голосування народних депутатів.
Необхідна версія R: >=3.1.0
Необхідні бібліотеки: sqldf

###Файли
Користувацькі функції збережено у файлі votings_analysis.r. Файл voting_data.r містить функції завантаження, збереження та зміни архіву даних голосувань. Дані голосування скрипт зберігає у файлах в форматі .Rda в папці votan. Назви файлів відповідають таблицям.
###Таблиці
mpids - таблиця зі списком депутатів та їхніх ID.
factids - таблиця зі списком фракцій та їхній ID.
votings - таблиця з назвами та часом голосувань.
vottab - основна таблиця. У стовбчиках ID голосування, його дата та час, результат голосовування, а також дві підтаблиці: pv, що містить дані персонального голосування депутатів за рішення та fv, що містить дані голосування фракцій.
mpdf - дані про голосування усіх нардепів за усі рішення в єдиній табличці.
fdf - дані фракційного голосування за усі рішення в єдиній табличці.
Папка votan7 містить архіви голосувань 7 скликання в тому ж форматі.

###Початок роботи
Завантажте файл voting_analysis.r та voting_data.r у робочу директорію, після чого введіть команду source("voting_analysis.r")
Скрипт запропонує вам 3 варіанти:

  1. Завантажити файли голосувань у форматі скрипта (найпростіший варіант, якщо адміністратор сторінки не забув оновити дані у папці votan)
  2. Дописати до файлів скрипта додаткові голосування (наприклад, по закінченню сесійного тижня)
  3. Створити масив голосувань "з нуля" з сирих даних (довго, але може знадобитися, якщо дані голосувань було зіпсовано)
    ####Для варіанту 1 Ви повинні мати у робочі директорії папку votan, яка містить всі дані голосувань у форматі .Rda. Після того як ви обрали варіант 1, дані буде завантажено.

####Для варіантів 2 або 3 Ці варіанти займає більше часу, і можу зіпсувати масив голосувань. Проте якщо ви бачите, що файли на репозиторії у папці votan було оновлені надто давно (адмін спить), ви можете оновити їх самостійно. Для цього необхідно здійснити такі дії:

  1. Запустіть скрипт за цієї адресою: https://github.com/chesnolabs/voting, вказавши період голосувань, який вас цікавить (наприклад, останній день чи тиждень голосування, яких бракує; але можна завантажити й голосування за весь період).
  2. Скрипт створить 3 файли: "_frakciji.csv", "_ids.csv", "*_MPs.csv". Додайте їх до робочої директорії R.
  3. Туди ж додайте файли deputies_ids.csv та faction_ids.csv.
  4. Створіть у робочій директорії файл filenames.csv, що має містити 5 рядків.
    i) Назва файлу з депутатськими ID (наприклад, deputies_id.csv)
    ii) Назва файлу з ID фракцій (наприклад, faction_ids.csv)
    iii) Назва файлу з персональним голосуванням народних депутатів (наприклад, 27.11.2014_21.01.2015_MPs.csv)
    iv) Назва файлу з голосуванням фракцій (наприклад, 27.11.2014_21.01.2015_frakciji.csv)
    v) Назва файлу з ID голосувань, їхніми назвами, часом і т.д. (наприклад, 27.11.2014_21.01.2015_ids.csv)
    Після цього вам необхідні ввести команду source("voting_analysis.r") та обрати 2 або 3. Функція може працювати досить довго, тому бажано додавати нові дані голосувань малими порціями та обирати варіант 2. Також обидва варіанти можуть зіпсувати архів голосувань, якщо ви вказали не ті назви у filenames.csv або ж двічі додали до масиву ті самі дані.

##Функції ####Порівняння голосувань двох депутатів - compare_deputies compare_deputies (d1, d2 , startDate = NULL, endDate = NULL, law_like_votings = FALSE, absence_as_against = TRUE)
d1 - ID першого депутата
d2 - ID другого депутата
startDate, endDate - перша та остання дата голосувань двох депутатів у форматі "dd.mm.yyyy". Якщо лишити параметри без значення, береться відповідно найперша та остання дата у масиві голосувань.
law_like_votings - за значення TRUE до уваги беруться лише голосування за законопроекти (внесення до порядку денного, за основу, в цілому) та поправки. По замовчанню FALSE.
absence_as_against - за значення TRUE голосування "Відсутній/Відсутня" вважається непідтримкою рішення. За значення FALSE голосування "Відсутній/Відсутня" виключаються з аналізу. По замовчанню TRUE.
**РЕЗУЛЬТАТ: ** вектор із 4 числовими значеннями. for_with - кількість спільних голосувань "За" двох депутатів, for_all - загальна кількість голосів "За" депутата d1, not_for_with - кількість голосувань, в яких обидва депутати не підтримали рішення, not_for_all - загальна кількість голосувань, які не підтримав депутат d1.
####Порівняння голосування депутатів із голосуванням фракції - compare_with_faction compare_with_faction(deps = NULL, fid = NULL, startDate = NULL, endDate = NULL, law_like_votings = FALSE, absence_as_against = TRUE)
deps - вектор із списком id депутатів, які порівнюються.
fid - айді фракції, з якою порівнюються голосування депутатів
startDate, endDate - перша та остання дата голосувань двох депутатів у форматі "dd.mm.yyyy". Якщо лишити параметри без значення, береться відповідно найперша та остання дата у масиві голосувань.
law_like_votings - за значення TRUE до уваги беруться лише голосування за законопроекти (внесення до порядку денного, за основу, в цілому) та поправки. По замовчанню FALSE.
absence_as_against - за значення TRUE голосування "Відсутній/Відсутня" вважається непідтримкою рішення. За значення FALSE голосування "Відсутній/Відсутня" виключаються з аналізу. По замовчанню TRUE.
**РЕЗУЛЬТАТ: ** об’єкт класу data.frame із 5 стовбчиками. deputy - ініціали депутата; for_with - кількість спільних голосувань "За" депутата і фракції, for_all - загальна кількість голосів "За" депутата , not_for_with - кількість голосувань, в яких депутат і фракція не підтримали рішення, not_for_all - загальна кількість голосувань, які не підтримав депутат.
####Порівняння голосування депутатів із голосуванням фракції - compare_faction_with_deps
Працює так само, як і попередня функція, лише значення for_all та not_for_all позначають відповідно загальну кількість рішень, які відповідно підтримала і не підтримала фракція.
####Порівняння голосувань групи депутатів між собою - compare_shortlist compare_shortlist (shortlist = NULL, startDate = NULL, endDate = NULL, law_like_votings = FALSE, absence_as_against = TRUE)
shortlist - вектор із списком id депутатів, які порівнюються.
startDate, endDate - перша та остання дата голосувань двох депутатів у форматі "dd.mm.yyyy". Якщо лишити параметри без значення, береться відповідно найперша та остання дата у масиві голосувань.
law_like_votings - за значення TRUE до уваги беруться лише голосування за законопроекти (внесення до порядку денного, за основу, в цілому) та поправки. По замовчанню FALSE.
absence_as_against - за значення TRUE голосування "Відсутній/Відсутня" вважається непідтримкою рішення. За значення FALSE голосування "Відсутній/Відсутня" виключаються з аналізу. По замовчанню TRUE.
РЕЗУЛЬТАТ: об’єкт класу data.frame. Кількість стовбчиків та кількість рядків відповідає кількості депутатів у групі. Назвами рядків та стовбчиків є ініціали депутатів. Кожний елемент data.frame є класу list з першим та єдиним елементом - числовим вектором з 4 результатами порівняння голосувань двох депутатів. for_with - кількість спільних голосувань "За" двох депутатів, for_all - загальна кількість голосів "За" депутата, чиє ім’я має рядок, not_for_with - кількість голосувань, в яких обидва депутати не підтримали рішення, not_for_all - загальна кількість голосувань, які не підтримав депутата, чиє ім’я має рядок.
####Порівняння двох фракцій - compare_factions compare_factions( f1 = NULL, f2 = NULL, startDate = NULL, endDate = NULL, law_like_votings = FALSE)
f1 - ID першої фракції
f2 - ID другої фракції
startDate, endDate - перша та остання дата голосувань двох депутатів у форматі "dd.mm.yyyy". Якщо лишити параметри без значення, береться відповідно найперша та остання дата у масиві голосувань.
law_like_votings - за значення TRUE до уваги беруться лише голосування за законопроекти (внесення до порядку денного, за основу, в цілому) та поправки. По замовчанню FALSE.
**РЕЗУЛЬТАТ: ** вектор із 4 числовими значеннями. for_with - кількість спільних голосувань "За" двох фракцій, for_all - загальна кількість голосів "За" фракції f1, not_for_with - кількість голосувань, в яких обидвs фракції не підтримали рішення, not_for_all - загальна кількість голосувань, які не підтримала фракція f1.

About

R-script to generate statistics of MPs' votings


Languages

Language:R 100.0%