Iš Vilniaus Github’o nesunku gauti balsavimų duomenis, bet jie ne visai tvarkingi.

data = read.csv2("https://raw.githubusercontent.com/vilnius/taryba/master/data/votes.csv", sep=",", header=T)

Faile yra ir senosios tarybos balsavimo duomenys, tad atsirenkam balsavimus po šios Tarybos priesaikos, atsirenkam reikiamus laukus ir išmetam balsavimą, kur balsuoja tik “Pirmininkas”.

data %>% 
  filter(as.Date(VOTE_DATE)>"2015-04-23") %>% 
  select(QUESTION_ID, VOTING_SHORT, SYS_ID) %>% 
  filter(VOTING_SHORT != " " && VOTING_SHORT != "Pirmininkas") -> data

Kai kur yra tik pirma vardo raidė, kai kur ir pilnas vardas, tad suvienodinam tai.

data %>% 
  mutate(VOTING_SHORT = sub("^(.).+ (.+)$", "\\1. \\2", VOTING_SHORT)) -> data

Tada susidedam duomenis pagal klausimą ir jei kas nors nebalsavo, įrašom 2 (t.y. tokią pačią reikšmę, lyg balsuotojas būtų susilaikęs). Transponuojam lentelę.

data %>% spread(VOTING_SHORT, SYS_ID, fill=2) -> data_spread
data_spread <- t(data_spread)

Lentelėje yra klaidingai nurodyta pavardė (“E. TamošiūnaitėSusilaikė”). Sutvarkom tai ir išmetam nereikalingas eilutes žmonių, kurie šiuo metu mandato nebeturi (“Šimašius” be vardo yra pirmininkaujančiojo balsavimai)

data_spread <- data_spread[!rownames(data_spread) %in% c("E. TamošiūnaitėSusilaikė", "Šimašius", "QUESTION_ID", "A. Šikšta", "A. Fiodorov"),]

Žmonių suspalvinimui pagal partijas reikia papildomų duomenų, kuriuos gaunu iš VRK svetainės

frakcijos = read.csv2('/Users/petras/dev/vilniaus_taryba.csv', sep=',', header=F)
frakcijos <- frakcijos[order(frakcijos$V1),]

Na, ir pagaliau galutinis paveikslas

ggbiplot(prcomp(data_spread, center=T), scale=F, labels=rownames(data_spread), 
         groups=factor(frakcijos$V2), var.axes=F) + 
  theme(legend.position="none")