R/il_bazi_raporlama.r

##
#' @export
bolgeleri_birlestir<-function(bolge_verisi){

    bolge_verisi %>%
    mutate_each(funs(sum(.)),-(il:cevre_turu)) %>%
    slice(1)

}

#' @export
oranlari_hesapla<-function(istatistik_verisi){

    oy_oranlari<-
    istatistik_verisi %>%
    select(gecerli_oy:bagimsiz) %>%
    mutate_each(funs(./gecerli_oy),-gecerli_oy) %>%
    select(-gecerli_oy) %>%
    gather(parti,oy_orani) %>%
    mutate(topla=ifelse(parti %in% c("ak_parti","chp","mhp","hdp"),FALSE,TRUE))

    oy_oranlari<-
    oy_oranlari %>%
    filter(!topla) %>%
    select(-topla) %>%
    spread(parti,oy_orani) %>%
    cbind(oy_oranlari %>% summarise(diger=sum(oy_orani*topla))) %>%
    mutate_each(funs(round(.,4)*100))

    return(oy_oranlari)

}

# secim_data <- secim151101g
# il_ismi <- "İstanbul"
#' @export
il_bazi_giris<-function(secim_data,il_ismi,bolge_text=0){

    #Il verisini al
    il_data<-
    secim_data %>%
    filter(il==il_ismi)

    if(nrow(il_data)==0){
        stop("İl ismi yanlış.")
    }

    if(bolge_text>0){
        il_data <-
        il_data %>%
        filter(bolge==bolge_text)
        if(nrow(il_data) == 0){
            stop("Yanlış bölge veya bu ilin bölgesi yok.")
        }

        ilce_text <-
        il_data %>%
        filter(ilce != "İli") %>%
        distinct(ilce) %>%
        arrange(ilce) %>%
        unlist()

        ilce_text[length(ilce_text)] <- paste0("ve ",ilce_text[length(ilce_text)])
        ilce_text <- paste0(ilce_text,collapse=", ")
    }

    #Bolge sayisi
    if(bolge_text > 0){
        secim_bolge_sayisi <- 1
    }else{
        secim_bolge_sayisi <- max(il_data$bolge)
    }

    #Ilce sayisi
    ilce_sayisi <-
    il_data %>%
    filter(ilce != "İli") %>%
    distinct(ilce) %>%
    nrow(.)

    #Koy, mahalle, belde, cezaevi sayisi.
    cevre_sayilari<-
    il_data %>%
    distinct(ilce,cevre,cevre_turu) %>%
    group_by(cevre_turu) %>%
    summarise(count=n()) %>%
    tidyr::spread(cevre_turu,count)

    #İl istatistikleri
    il_istatistikleri <-
    il_data %>%
    filter(ilce == "İli" & cevre == "Genel" & cevre_turu == "Toplam")

    #İzmir, Ankara, İstanbul gibi birden çok bölge varsa birleştir
    if(secim_bolge_sayisi > 1){
        il_istatistikleri <- bolgeleri_birlestir(bolge_verisi=il_istatistikleri)
    }


    #Cumle haline getir.
    output_text<-
    paste0(
        ifelse(bolge_text > 0, paste0(il_ismi," ",bolge_text,". bölge ",ilce_text," ilçelerini kapsamaktadır."),""),
        ifelse(bolge_text > 0,"Bu bölgede ",paste0(il_ismi," ilinde bu seçimde ")),
           ifelse(secim_bolge_sayisi>1,paste0(secim_bolge_sayisi," seçim bölgesi "),""),
           ilce_sayisi," ilçe, ",
           ifelse(cevre_sayilari$Mahalle>0,paste0(cevre_sayilari$Mahalle," mahalle, "),""),
           ifelse(suppressWarnings(cevre_sayilari$Belde>0),paste0(cevre_sayilari$Belde," belde, "),""),
           ifelse(suppressWarnings(cevre_sayilari$Köy>0),paste0(cevre_sayilari$Köy," köy, "),""),
           ifelse(cevre_sayilari$Cezaevi>0,paste0(cevre_sayilari$Cezaevi," cezaevi, "),""),
           "ve toplamda ",format(il_istatistikleri$sandik,big.mark=".",decimal.mark=",")," seçim sandığı bulunmaktadır. ",
           ifelse(bolge_text > 0, "Seçim bölgesi","İl")," içerisinde toplam ", format(il_istatistikleri$kayitli_secmen,big.mark=".",decimal.mark=",")," kayıtlı seçmen bulunmaktadır. ",
           format(il_istatistikleri$oy_kullanan,big.mark=".",decimal.mark=",")," seçmen oy kullanmış, geçerli oy sayısı ise ",format(il_istatistikleri$gecerli_oy,big.mark=".",decimal.mark=",")," olmuştur. ",
           "Seçime katılım oranı %",format(round(il_istatistikleri$oy_kullanan/il_istatistikleri$kayitli_secmen,4)*100,big.mark=".",decimal.mark=",")," olarak gerçekleşmiştir.<p />"

    )

    #Partilerin oy oranlarını hesapla
    oy_oranlari<- oranlari_hesapla(il_istatistikleri)
    # il_istatistikleri %>%
    # select(gecerli_oy:bagimsiz) %>%
    # mutate_each(funs(./gecerli_oy),-gecerli_oy) %>%
    # select(-gecerli_oy) %>%
    # gather(parti,oy_orani) %>%
    # mutate(topla=ifelse(parti %in% c("ak_parti","chp","mhp","hdp"),FALSE,TRUE))
    #
    # oy_oranlari<-
    # oy_oranlari %>%
    # filter(!topla) %>%
    # select(-topla) %>%
    # spread(parti,oy_orani) %>%
    # cbind(oy_oranlari %>% summarise(diger=sum(oy_orani*topla))) %>%
    # mutate_each(funs(round(.,4)*100))

    #Cümleye ekle
    output_text <-
    paste0(output_text," ",
    "Toplam sonuçlarda ",
    "AK Parti %",format(oy_oranlari$ak_parti,big.mark=".",decimal.mark=","),", ",
    "CHP %",format(oy_oranlari$chp,big.mark=".",decimal.mark=","),", ",
    "MHP %",format(oy_oranlari$mhp,big.mark=".",decimal.mark=","),", ",
    "HDP %",format(oy_oranlari$hdp,big.mark=".",decimal.mark=","),", ",
    "ve diğer partiler ile bağımsızlar %",format(oy_oranlari$diger,big.mark=".",decimal.mark=",")," oy oranına sahip olmuşlardır. "
    )

    output_text <- gsub(", ve"," ve",output_text)

    oy_siralama <-
    secim_data %>%
    filter(ilce == "İli" & cevre == "Genel" & cevre_turu == "Toplam") %>%
    group_by(il) %>%
    summarise_each(funs(sum),kayitli_secmen:bagimsiz) %>%
    ungroup() %>%
    group_by(il) %>%
    summarise_each(funs(./gecerli_oy),ak_parti:hdp) %>%
    ungroup() %>%
    mutate_each(funs(rank(-.)),-il) %>%
    filter(il==il_ismi)

    if(bolge_text==0){
        output_text <-
        paste0(output_text," ",il_ismi,", 81 il arasından, partilerin kendi içindeki oy oranları sıralamalarına göre ",
        "AK Parti'nin ",oy_siralama$ak_parti,", ",
        "CHP'nin ",oy_siralama$chp,", ",
        "MHP'nin ",oy_siralama$mhp," ",
        "ve HDP'nin ",oy_siralama$hdp,". sıradaki ili olmuştur.",
        "^[Örneğin, AK Parti ",oy_siralama$ak_parti-1," ilde daha yüksek, ",81-oy_siralama$ak_parti," ilde ise daha düşük oy oranı görmüştür.] ")

    }

    return(output_text)
}

#' @export
il_bazi_giris_tepe<-function(...){

    args<-list(...)
    # print(args)

    output_text<-il_bazi_giris(...,bolge_text=0)

    # print("Checkpoint 1")

    bolge_sayisi<-
    args$secim_data %>%
    filter(il==args$il_ismi) %>%
    summarise(max(bolge)) %>%
    unlist

    # print("Checkpoint 2")

    if(bolge_sayisi > 1){
        for(i in 1:bolge_sayisi){
            output_text<-paste0(output_text,"<p />",il_bazi_giris(...,bolge_text=i))
        }
    }

    return(output_text)
}


#' @export
il_bazi_oylar_daire_grafigi<-function(secim_list=list(`7 Haziran`=secim150607g,`1 Kasım`=secim151101g),il_ismi){

    secim_sayisi<-length(secim_list)
    secim_isimleri <- names(secim_list)

    oy_oranlari<-data_frame(parti=character(),oy_orani=numeric(),position=numeric(),donem=character())

    for(i in 1:secim_sayisi){

        il_istatistikleri <-
        secim_list[[i]] %>%
        filter(il == il_ismi & ilce =="İli" & cevre == "Genel" & cevre_turu == "Toplam")

        if(nrow(il_istatistikleri) > 1){
            il_istatistikleri <- bolgeleri_birlestir(il_istatistikleri)
        }

        #Partilerin oy oranlarını hesapla
        oy_oranlari <-
        oranlari_hesapla(il_istatistikleri) %>%
        gather(parti,oy_orani) %>%
        left_join(data.frame(parti=c("ak_parti","chp","mhp","hdp","diger")),.,by="parti") %>%
        mutate(position=100- (cumsum(oy_orani)-oy_orani/2),donem=secim_isimleri[i]) %>%
        rbind(oy_oranlari,.)


    }

    oy_oranlari <-
    oy_oranlari %>% mutate(donem=ordered(donem,levels=secim_isimleri))

    # oy_oranlari2 <-
    # il_istatistikleri %>%
    # mutate(ak_parti = 0.75*ak_parti,mhp=1.2*mhp,chp=0.9*chp) %>%
    # oranlari_hesapla(.) %>%
    # gather(parti,oy_orani) %>%
    # mutate(oy_orani = round(oy_orani / sum(oy_orani),4)*100) %>%
    # left_join(data.frame(parti=c("ak_parti","chp","mhp","hdp","diger")),.,by="parti") %>%
    # mutate(position=100 - (cumsum(oy_orani)-oy_orani/2),donem="1 Kasım") %>%
    # rbind(oy_oranlari,.)


    ggplot(data=oy_oranlari,aes(x="",y=oy_orani,fill=ordered(parti,levels=c("ak_parti","chp","mhp","hdp","diger")))) +
    geom_bar(stat="identity",width=1) +
    coord_polar("y",start=1/3,direction = -1) +
    scale_fill_manual(values=c("#E4670C","#D6001C","#003f91","#7330b4","grey"),labels=c("AK Parti","CHP","MHP","HDP","Diğer"),position="bottom") +
    scale_y_continuous(expand=c(0,0)) +
    scale_x_discrete(expand=c(0,0)) +
    facet_wrap(~donem) +
    theme_void() +
    theme(
    legend.position="top",
    panel.spacing.x = unit(0, "lines"),
    panel.spacing.y = unit(0, "lines"),
    # strip.switch.pad.grid = unit(0, "lines"),
    strip.text.x = element_text(size = 12, face = "bold", angle = 0,vjust=-1),
    axis.text.x=element_blank(),
    panel.border=element_rect(colour = "grey", fill=NA, size=0.2),
    panel.grid.major=element_blank(),
    panel.grid.minor=element_blank(),
    strip.background = element_rect( fill="grey", size=0.2),
    panel.background = element_rect( color="grey",fill=NA, size=0)
    # plot.margin = unit(c(1,0.5,0,0.5), "lines")
    # panel.margin = unit(c(-0.5,0,-0.5,0), "lines")
    # axis.title.x = element_blank(),
    # axis.text.x=element_blank(),
    # axis.title.y = element_blank(),
    # panel.border = element_blank(),
    # panel.grid=element_blank(),
    # axis.ticks = element_blank(),
    # plot.title=element_text(size=14, face="bold")
     ) +
    geom_text(aes(label = paste0("%",oy_orani),y=position,x=1.7),size=3,angle=0) +
    # geom_text(aes(y = value/3 + c(0, cumsum(value)[-length(value)]),
    #         label = percent(value/100)), size=5)
    labs(fill="")

}

#' @export
il_bazi_ilce_katilim_oranlari<-function(secim_list=list(`20150607`=secim150607g,`20151101`=secim151101g),il_ismi){

    il_ilceler_verisi <-
    plyr::ldply(secim_list,
        .fun=(. %>%
            filter(il == il_ismi & ilce!="İli" & cevre=="Genel" & cevre_turu == "Toplam") %>%    select(ilce,kayitli_secmen,oy_kullanan,gecerli_oy) %>%
            # gather(deger_adi,deger,-ilce)
            tbl_df()
            ),.id="secim") %>%

            mutate(secim=ordered(secim,levels=names(secim_list))) %>%
            tbl_df()

    il_ilceler_degisim <-
    il_ilceler_verisi %>%
    mutate(katilim_orani = oy_kullanan / kayitli_secmen) %>%
    select(secim:kayitli_secmen,katilim_orani) %>%
    gather(sayi,deger,-(secim:ilce)) %>%
    arrange(ilce,sayi,secim) %>%
    group_by(ilce,sayi) %>%
    mutate(degisim_oransal=(lead(deger,1)/deger - 1)*100,
            degisim_dogrusal= 100*(lead(deger,1) - deger)) %>%
    filter(!is.na(degisim_oransal)) %>%
    mutate(degisim=ifelse(sayi=="katilim_orani",degisim_dogrusal,degisim_oransal)) %>%
    select(ilce,sayi,degisim) %>%
    ungroup() %>%
    spread(sayi,degisim)

    kayitli_secmen_sira <-
    il_ilceler_degisim %>% arrange(desc(kayitli_secmen))

    katilim_orani_sira <-
    il_ilceler_degisim %>% arrange(desc(katilim_orani))


    ilce_sayisi <- nrow(il_ilceler_degisim)

    yorum_bilgisi<-
    paste0("Kayıtlı seçmen sayısındaki değişim en yüksek oranda ",
    kayitli_secmen_sira$ilce[1]," (",ifelse(kayitli_secmen_sira$kayitli_secmen[1]>=0,"+","-"),"%",abs(round(kayitli_secmen_sira$kayitli_secmen[1],2)),")",
    " ilçesinde ve en düşük oranda ",
    kayitli_secmen_sira$ilce[ilce_sayisi]," (",ifelse(kayitli_secmen_sira$kayitli_secmen[ilce_sayisi]>=0,"+","-"),"%",abs(round(kayitli_secmen_sira$kayitli_secmen[ilce_sayisi],2)),")",
    " ilçesinde görülmektedir. ",
    "Seçime katılım oranında değişim ise en yüksek oranda ",
    katilim_orani_sira$ilce[1]," (",ifelse(katilim_orani_sira$katilim_orani[1]>=0,"+","-"),"%",abs(round(katilim_orani_sira$katilim_orani[1],2)),")",
    " ilçesinde ve en düşük oranda ",
    katilim_orani_sira$ilce[ilce_sayisi]," (",ifelse(katilim_orani_sira$katilim_orani[ilce_sayisi]>=0,"+","-"),"%",abs(round(katilim_orani_sira$katilim_orani[ilce_sayisi],2)),")",
    " ilçesinde görülmektedir."
    )



    grafik_bilgisi<-
    ggplot(data=il_ilceler_verisi, aes(x=ilce)) +
    # geom_bar(aes(y=deger,fill=deger_adi),stat="identity",position="identity") +
    geom_bar(aes(y=kayitli_secmen,fill=secim),stat="identity",position=position_dodge(width=1),alpha=0.6) +
    geom_bar(aes(y=oy_kullanan,group=secim,fill="Geçersiz Oylar"),stat="identity",position=position_dodge(width=1),alpha=1) +
    geom_bar(aes(y=gecerli_oy,group=secim,fill="Geçerli Oylar"),stat="identity",position=position_dodge(width=1)) +
    labs(x="",y="Seçmen Sayısı (x1000)",
        title=NULL) +
    scale_x_discrete(expand = c(0,0.75)) +
    scale_y_continuous(expand=c(0,0),labels = function(x) round(x/1000),limits=c(0,ceiling(max(il_ilceler_verisi$kayitli_secmen)/10000)*10000)) +
    # scale_y_continuous(expand=c(0,0),labels = function(x) round(x/1000),limits=c(0,ceiling(max(il_ilceler_verisi$deger)/10000)*10000)) +
    scale_fill_manual(name="",values=c("#00FF84","#00974E","#6CD6FF","#DB3800"),labels=c("7 Haziran Seçmen Sayısı","1 Kasım Seçmen Sayısı","Geçerli Oy","Geçersiz Oy")) +
    # scale_color_manual(name="",values=c("black","grey"),labels=c("Geçerli Oy","Geçersiz Oy")) +
    theme_bw() +
    theme(legend.position="top",
        legend.key.size=unit(1,"char"),
        # legend.margin=unit(0.05,"cm"),
            plot.title=element_text(hjust=0.5),plot.caption=element_text(hjust=0.5),
            axis.text.x=element_text(angle=45,vjust=1,hjust=1))

    return(list(grafik=grafik_bilgisi,yorum=yorum_bilgisi))
}

#' @export
il_bazi_ilce_parti_oy_oranlari<-function(secim_list=list(`20150607`=secim150607g,`20151101`=secim151101g),il_ismi,parti_ismi,parti_etiketi,renk_semasi){

    il_ilceler_verisi <-
    plyr::ldply(secim_list,
        .fun=(. %>%
            filter(il == il_ismi & ilce!="İli" & cevre=="Genel" & cevre_turu == "Toplam") %>% select_("ilce","gecerli_oy",parti_ismi) %>%
            # gather(deger_adi,deger,-ilce)
            tbl_df()
            ),.id="secim") %>%

            mutate(secim=ordered(secim,levels=names(secim_list))) %>%
            tbl_df()

    grafik_verisi<-
    il_ilceler_verisi %>%
    mutate_(oy_orani=paste(parti_ismi,"/gecerli_oy")) %>%
    transmute(secim=ordered(secim,levels=names(secim_list)),ilce,oy_orani=round(oy_orani,4)) %>%
    arrange(ilce) %>%
    tbl_df()

    ilk_secim_oran <-
    grafik_verisi %>%
    filter(secim==names(secim_list)[1]) %>%
    arrange(desc(oy_orani)) %>%
    mutate(oy_orani=round(100*oy_orani,2)) %>%
    slice(c(1,nrow(.)))

    ikinci_secim_oran <-
    grafik_verisi %>%
    filter(secim==names(secim_list)[2]) %>%
    arrange(desc(oy_orani)) %>%
    mutate(oy_orani=round(100*oy_orani,2)) %>%
    slice(c(1,nrow(.)))

    degisim_verisi<-
    grafik_verisi %>%
    group_by(ilce) %>%
    mutate(degisim= 100*(lead(oy_orani,1) - oy_orani)) %>%
    filter(!is.na(degisim)) %>%
    select(ilce,degisim) %>%
    ungroup() %>%
    arrange(desc(degisim)) %>%
    slice(c(1,nrow(.)))

    yorum_bilgisi <-
    paste0(parti_etiketi,", 7 Haziran seçimlerinde ",il_ismi," ilçeleri arasında en yüksek oy oranını ",
        ilk_secim_oran$ilce[1]," (%",ilk_secim_oran$oy_orani[1],"),",
        " en düşük oy oranını ",
        ilk_secim_oran$ilce[2]," (%",ilk_secim_oran$oy_orani[2],")",
        " ilçelerinde görmüştür. ",
        "1 Kasım seçimlerinde ise en yüksek oy oranını ",
            ikinci_secim_oran$ilce[1]," (%",ikinci_secim_oran$oy_orani[1],"),",
            " en düşük oy oranını ",
            ikinci_secim_oran$ilce[2]," (%",ikinci_secim_oran$oy_orani[2],")",
            " ilçelerinde görmüştür. ",


        ifelse(degisim_verisi$degisim[1]<0,"Parti hiçbir ilçede oy oranını yükseltememiştir. ",""),
        ifelse(degisim_verisi$degisim[2]>0,"Parti bütün ilçelerde oy oranlarını yükseltmiştir. ",""),
        ifelse(degisim_verisi$degisim[1]>0,paste0("Puan bazında en büyük yükseliş ",degisim_verisi$ilce[1]," ilçesinde (+%",abs(round(degisim_verisi$degisim[1],2)),") görülmektedir. "),""),
        ifelse(degisim_verisi$degisim[2]<0,paste0("Puan bazında en büyük düşüş ",ifelse(degisim_verisi$degisim[1]>0,"ise ",""),degisim_verisi$ilce[2]," ilçesinde (-%",abs(round(degisim_verisi$degisim[2],2)),") görülmektedir."),"")

        #
        # "İki seçim arasında oy oranlarındaki değişimi sıralayacak olursak; en yüksek oranda değişim ",
        # degisim_verisi$ilce[1]," (",ifelse(degisim_verisi$degisim[1]>=0,"+","-"),"%",abs(round(degisim_verisi$degisim[1],2)),")",
        # " ilçesinde ve en düşük oranda ",
        # degisim_verisi$ilce[2]," (",ifelse(degisim_verisi$degisim[2]>=0,"+","-"),"%",abs(round(degisim_verisi$degisim[2],2)),")",
        # " ilçesinde görülmektedir."
    )

    grafik_bilgisi<-
    ggplot(data=grafik_verisi, aes(x=ilce)) +
    # geom_bar(aes(y=deger,fill=deger_adi),stat="identity",position="identity") +
    geom_bar(aes(y=oy_orani,fill=secim),stat="identity",position=position_dodge(width=1),alpha=0.9) +
    labs(x="",y=paste0(parti_etiketi," Oy Oranı"),
        title=NULL) +
    scale_x_discrete(expand = c(0,0.75)) +
    scale_y_continuous(labels = scales::percent,expand=c(0,0),limits=c(0,1)) +
    # scale_y_continuous(expand=c(0,0),labels = function(x) round(x/1000),limits=c(0,ceiling(max(il_ilceler_verisi$kayitli_secmen)/10000)*10000)) +
    scale_fill_manual(name="",values=renk_semasi,labels=c("7 Haziran","1 Kasım")) +
    # scale_color_manual(name="",values=c("black","grey"),labels=c("Geçerli Oy","Geçersiz Oy")) +
    theme_bw() +
    theme(legend.position="top",
        legend.key.size=unit(1,"char"),
        # legend.margin=unit(0.05,"cm"),
            plot.title=element_text(hjust=0.5),plot.caption=element_text(hjust=0.5),
            axis.text.x=element_text(angle=45,vjust=1,hjust=1))

    return(list(grafik=grafik_bilgisi,yorum=yorum_bilgisi))
}



#' @export
oy_orani_histogram_il<-function(secim_verisi,il_ismi,baraj_ustu_partiler=c("ak_parti","chp","mhp","hdp")){

il_oy_oran<-
secim_verisi %>%
filter(grepl(il_ismi,il) & !(cevre_turu %in% c("Toplam"))) %>%
select_("ilce","cevre","cevre_turu","gecerli_oy",.dots=baraj_ustu_partiler) %>%
group_by(ilce,cevre,cevre_turu) %>%
summarise_each(funs="sum") %>%
mutate_each_(funs(round(./gecerli_oy,4)),baraj_ustu_partiler) %>%
gather(key=parti,value=oy_orani,-ilce,-cevre,-cevre_turu)  %>%
filter(parti != "gecerli_oy" & oy_orani > 0.05)

the_plot<-
ggplot(data=il_oy_oran) +
geom_histogram(aes(x=oy_orani,fill=ordered(parti,levels=baraj_ustu_partiler)),color="white",size=0.1,binwidth=0.01) +
# geom_density(aes(x=oy_orani,fill=parti),size=0.1,alpha=0.75,position="stack") +
labs(x="Parti Oy Oranı (%5 ve altı gösterilmemektedir.)",y="Çevre (ör. Mahalle, Köy) Sayısı",
    title=NULL) +
scale_fill_manual(name="",labels=c("AK Parti","CHP","MHP","HDP"),values=c("#E4670C","#D6001C","#003f91","#7330b4")) +
scale_x_continuous(labels = scales::percent,expand = c(0, 0),limits=c(0.05,1.05)) +
# scale_y_continuous(expand = c(0, 0)) +
theme_bw() +
theme(legend.position="top",legend.key.size=unit(1,"char"),legend.margin=unit(0.05,"cm"),plot.title=element_text(hjust=0.5),plot.caption=element_text(hjust=0.5))

bin_max<-max(ggplot_build(the_plot)$data[[1]][,"ymax"])

the_plot +
scale_y_continuous(expand=c(0,0),limits=c(0,ceiling(bin_max/5)*5))

}


#' @export
oy_orani_boxplot_il<-function(secim_verisi,il_ismi,baraj_ustu_partiler=c("ak_parti","chp","mhp","hdp")){

il_oy_oran<-
secim_verisi %>%
filter(grepl(il_ismi,il) & !(cevre_turu %in% c("Toplam"))) %>%
select_("ilce","cevre","cevre_turu","gecerli_oy",.dots=baraj_ustu_partiler) %>%
# group_by(ilce,cevre,cevre_turu) %>%
# summarise_each(funs="sum") %>%
mutate_each_(funs(round(./gecerli_oy,4)),baraj_ustu_partiler) %>%
gather(key=parti,value=oy_orani,-ilce,-cevre,-cevre_turu)  %>%
filter(parti != "gecerli_oy" & oy_orani > 0.05)

the_plot<-
ggplot(data=il_oy_oran) +
geom_boxplot(aes(x=ordered(parti,levels=baraj_ustu_partiler),y=oy_orani,fill=ordered(parti,levels=baraj_ustu_partiler)),color="#333333") +
# geom_density(aes(x=oy_orani,fill=parti),size=0.1,alpha=0.75,position="stack") +
labs(x="Partiler",y="Parti Oy Oranları (%5 altı dahil edilmemiştir.)",
    title=NULL) +
scale_fill_manual(name="",labels=c("AK Parti","CHP","MHP","HDP"),values=c("#E4670C","#D6001C","#003f91","#7330b4")) +
scale_x_discrete(labels=c("AK Parti","CHP","MHP","HDP")) +
scale_y_continuous(labels = scales::percent,expand = c(0, 0),limits=c(0.05,1.05)) +
# scale_y_continuous(expand = c(0, 0)) +
theme_bw() +
theme(legend.position="none",plot.title=element_text(hjust=0.5),plot.caption=element_text(hjust=0.5))

return(the_plot)
}


#' @export
kaymalari_hesapla<-function(degisimler,parti_grid){

    degisimler <-
    degisimler %>%
    gather(key=parti,value=degisim,-(il:oy_agirlik),-toplam_degisim)

    parti_grid %>% left_join(.,degisimler %>% select(oy_agirlik:degisim),by="parti") %>% left_join(.,degisimler %>% select(parti2=parti,degisim2=degisim),by="parti2") %>% filter(degisim < 0 & degisim2 > 0) %>% transmute(parti,parti2,oy_agirlik,kayma=abs(degisim)*degisim2/toplam_degisim)
}


#' @export
oy_kaymalari<-function(il_ismi){

    data_1 <-
    secim150607g %>%
    filter(il==il_ismi & cevre_turu != "Toplam") %>%
    select(il,ilce,cevre,cevre_turu,gecerli_oy,ak_parti:hdp) %>%
    mutate(diger=gecerli_oy - ak_parti - chp - mhp - hdp) %>%
    group_by(il,ilce,cevre,cevre_turu) %>%
    summarise_each(funs(sum))

    colnames(data_1)[-(1:4)] <- paste0("haz_",colnames(data_1)[-(1:4)])

    # %>% mutate_each(funs(./gecerli_oy),ak_parti:hdp) %>% mutate(diger=1-ak_parti-chp-mhp-hdp)

    data_2 <- secim151101g %>%
    filter(il==il_ismi & cevre_turu != "Toplam") %>%
    select(il,ilce,cevre,cevre_turu,gecerli_oy,ak_parti:hdp) %>%
    mutate(diger=gecerli_oy - ak_parti - chp - mhp - hdp) %>%
    group_by(il,ilce,cevre,cevre_turu) %>%
    summarise_each(funs(sum))

    colnames(data_2)[-(1:4)] <- paste0("kas_",colnames(data_2)[-(1:4)])

    # %>% mutate_each(funs(./gecerli_oy),ak_parti:hdp) %>% mutate(diger=1-ak_parti-chp-mhp-hdp)

    butun_data <-
    full_join(data_1,data_2,by=c("il","ilce","cevre","cevre_turu")) %>%
    mutate_each(funs(ifelse(is.na(haz_gecerli_oy) | is.na(kas_gecerli_oy),"Diger",.)),il:cevre_turu) %>%
    mutate_each(funs(ifelse(is.na(.),0,.))) %>%
    mutate(id_num=ifelse(il!="Diger",row_number(),0)) %>%
    select(il:cevre_turu,id_num,everything()) %>%
    group_by(il,ilce,cevre,cevre_turu,id_num) %>%
    summarise_each(funs(sum(.)),-(il:id_num))  %>%
    ungroup() %>%
    mutate_each(funs(./haz_gecerli_oy),haz_ak_parti:haz_diger) %>% mutate_each(funs(./kas_gecerli_oy),kas_ak_parti:kas_diger) %>%
    transmute(il,ilce,cevre,cevre_turu,oy_agirlik=kas_gecerli_oy,
    # transmute(il,ilce,cevre,cevre_turu,oy_agirlik=(haz_gecerli_oy+kas_gecerli_oy)/2,
    ak_parti=kas_ak_parti - haz_ak_parti,
    chp=kas_chp - haz_chp,
    mhp=kas_mhp - haz_mhp,
    hdp=kas_hdp - haz_hdp,
    diger=kas_diger - haz_diger,
    toplam_degisim=(abs(ak_parti)+abs(chp)+abs(mhp)+abs(hdp)+abs(diger))/2) %>%
    tbl_df()

    parti_ikili <- expand.grid(parti=c("ak_parti","chp","mhp","hdp","diger"),parti2=c("ak_parti","chp","mhp","hdp","diger"),stringsAsFactors=FALSE)



    kayma_verisi<-
    plyr::ddply(.data=butun_data %>% mutate(sandik=row_number()),.variables=c("sandik"),.fun=kaymalari_hesapla,parti_grid = parti_ikili %>% filter(parti != parti2)) %>% tbl_df()

    # kayma_verisi %>% group_by(parti,parti2) %>% summarise(kayma=sum(kayma*oy_agirlik)) %>% ungroup() %>% mutate(kayma=round(kayma,4)*100) %>% spread(parti2,kayma,fill=0)

    kayma_form <- kayma_verisi %>% mutate(kayma_oy=kayma*oy_agirlik,kayma_oy=kayma_oy/sum(butun_data$oy_agirlik)) %>% group_by(parti,parti2) %>%
    # summarise(kayma=weighted.mean(kayma,oy_agirlik),oy_agirlik=sum(oy_agirlik)) %>% ungroup()
    summarise(kayma=sum(kayma_oy)) %>% ungroup()

    oy_kaymalari_tablo<-
    kayma_form %>%
    mutate(kayma=paste0("%",round(kayma,4)*100)) %>%
    mutate_each(funs(ordered(.,levels=c("ak_parti","chp","mhp","hdp","diger"))),parti,parti2) %>%
    mutate(parti=plyr::revalue(parti,c("ak_parti"="AK Parti","chp"="CHP","mhp"="MHP","hdp"="HDP","diger"="Diğer"))) %>%
    mutate(parti2=plyr::revalue(parti2,c("ak_parti"="AK Parti","chp"="CHP","mhp"="MHP","hdp"="HDP","diger"="Diğer"))) %>%
    spread(parti2,kayma,fill=0) %>% rename(` `=parti)

    net_kayma_veri<-
    left_join(kayma_form,kayma_form %>%
        transmute(parti,parti2,kayma2=-kayma),by=c("parti"="parti2","parti2"="parti")) %>%
        transmute(parti,parti2,net_kayma=100*round(kayma+kayma2,4)) %>%
        filter(net_kayma > 0) %>%
        # group_by(parti2) %>%
        # summarise(sum(net_kayma)) %>%
        tbl_df()

    net_oy_kaymalari_tablo<-
    parti_ikili %>%
    left_join(.,net_kayma_veri,by=c("parti","parti2")) %>%
    mutate(net_kayma=paste0("%",ifelse(is.na(net_kayma),0,net_kayma))) %>%
    mutate_each(funs(ordered(.,levels=c("ak_parti","chp","mhp","hdp","diger"))),parti,parti2) %>%
    mutate(parti=plyr::revalue(parti,c("ak_parti"="AK Parti","chp"="CHP","mhp"="MHP","hdp"="HDP","diger"="Diğer"))) %>%
    mutate(parti2=plyr::revalue(parti2,c("ak_parti"="AK Parti","chp"="CHP","mhp"="MHP","hdp"="HDP","diger"="Diğer"))) %>%
    spread(parti2,net_kayma) %>% rename(` `=parti)

    return(list(oy_kaymalari_tablo,net_oy_kaymalari_tablo))
}
berkorbay/secimler documentation built on May 12, 2019, 4:21 p.m.