Created
April 7, 2020 20:15
-
-
Save Valexandre/3e37294294191d183a78d2a4b8f59bca to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
##%######################################################%## | |
# # | |
#### On veut présenter des valeurs #### | |
#### absolues et des évolutions dans #### | |
#### chaque commune et les mettre #### | |
#### en perspective avec une valeur départementale. #### | |
# # | |
##%######################################################%## | |
#Au Kremlin-Bicêtre, la population VERBE AU PASSE COMPOSE, passant de XXX à YYYY tandis qu'elle VERBE A L'IMPARFAIT dans le reste du Val de Marne, autour de ZZZZ. | |
#On s'assure d'avoir les bons noms de communes et de départements en toutes circonstances, dataset créé à partir de ça : https://www.insee.fr/fr/information/4316069 | |
TouslesLibellesDesVilles <-read_csv("C:/Users/valexandre/OneDrive - Groupe Les Echos/EXT/DonneesSources/COMMUNE/TouslesLibellesDesVilles.txt") | |
colnames(TouslesLibellesDesVilles)[1] <- "CODGEO" | |
TouslesLibellesDesDepartements <-read_csv( "C:/Users/valexandre/OneDrive - Groupe Les Echos/EXT/DonneesSources/COMMUNE/TouslesLibellesDesDepartements.txt") | |
head(TouslesLibellesDesDepartements) | |
head(TouslesLibellesDesVilles) | |
#On charge les librairies | |
library(tidyverse) | |
library(readr) | |
library(readxl) | |
library(glue) | |
# On charge les fonctions utiles | |
options(scipen=999) | |
`%!in%` = function(x, y) ! (x %in% y) | |
Majuscule = function(x) (paste0(toupper(substr(x, 1, 1)), substr(x, 2, nchar(x)))) | |
MajMin = function(x) (paste0(toupper(substr(x, 1, 1)), tolower(substr(x, 2, nchar(x))))) | |
Virg=function(x) (gsub("\\.",",",x)) | |
Milliers=function(x) (formatC(round(x,0), format="f", big.mark = " ", digits=0)) | |
# On charge les données | |
EvolutionPopulation_2016_2006 <- read_csv("C:/Users/valexandre/Documents/DonneesMaVille/FINALDATA/EvolutionPopulation-2016-2006.csv", locale = locale(encoding = "ISO-8859-1")) | |
EvolutionPopulation_2016_2006<-EvolutionPopulation_2016_2006[c(1:3,5)] | |
head(EvolutionPopulation_2016_2006) | |
EvolutionPopulation_2016_2006$EvolPopBrute<-EvolutionPopulation_2016_2006$P16_POP-EvolutionPopulation_2016_2006$P06_POP | |
# On charge le jeu de données des expressions | |
Lexique <-read_csv("C:/Users/valexandre/OneDrive - Groupe Les Echos/EXT/DonneesSources/Lexique - Evolution.csv") | |
Lexique$valeurmin<-as.numeric(gsub(",",".",Lexique$valeurmin)) | |
Lexique$valeurmax<-as.numeric(gsub(",",".",Lexique$valeurmax)) | |
head(Lexique[,1:5]) | |
#Au Kremlin-Bicêtre, la population a plus que doublé, passant de XXX à YYYY tandis qu'elle stagnait dans le reste du Val de Marne, autour de ZZZZ. | |
# On joint les noms de la ville et du departement au jeu de données | |
Texte<-EvolutionPopulation_2016_2006%>%mutate(dep=substr(CODGEO,1,2))%>% | |
left_join(TouslesLibellesDesDepartements)%>%left_join(TouslesLibellesDesVilles) | |
head(Texte) | |
# On calcule les valeurs deps | |
EvolDep<-EvolutionPopulation_2016_2006%>%mutate(dep=substr(CODGEO,1,2))%>%group_by(dep)%>% | |
summarise(P16_POPDep=sum(P16_POP,na.rm=T), | |
P06_POPDep=sum(P06_POP,na.rm=T))%>% | |
mutate(TxEvolDep=(P16_POPDep-P06_POPDep)/P06_POPDep*100, | |
EvolPopBruteDep=(P16_POPDep-P06_POPDep)) | |
#Au Kremlin-Bicêtre, la population a plus que doublé, passant de XXX à YYYY tandis qu'elle stagnait dans le reste du Val de Marne, autour de ZZZZ. | |
# On fait une première jointure sur la situaiton de la population de la ville. | |
# une évolution en % dont le sujet est un féminin singulier (et on enlève les formulations à bases de valeur, pas adaptées) | |
Texte_1J<-merge(Texte, Lexique %>% | |
filter(utilisation == "evolution")%>% | |
filter(!grepl("valeur",texte))%>% | |
filter(`singouplur(S/P)`=="S")%>% | |
filter(`genre(M/F/N)`=="N" |`genre(M/F/N)`=="F"))%>% | |
filter(EvolPop2006_16 >= valeurmin, EvolPop2006_16 <= valeurmax) %>% | |
rename(texteevoville=texte)%>% | |
select(colnames(Texte)[1:5],texteevoville,everything())%>% | |
arrange(CODGEO) | |
head(Texte_1J) | |
#On passe de 35675 lignes à 174644 lignes, avec une ligne pour chaque possibilité de verbe. | |
# On joint ensuite les évols départements | |
Texte_2J<-Texte_1J%>%left_join(EvolDep) | |
#On va créer deux phrases types et ensuite on choisira au hasard parmi l'un de ces deux templates, pour l'une des lignes possibles. | |
#On pourrait faire la même pour le département, mais on va se contenter de 3 cas: augmentait, baissait, stagnait | |
#Au Kremlin-Bicêtre, la population a plus que doublé, passant de XXX à YYYY tandis qu'elle stagnait dans le reste du Val de Marne, autour de ZZZZ. | |
colnames(Texte_2J) | |
GabaritsTextes<-Texte_2J%>% | |
mutate(Template1=case_when(TxEvolDep<= -2 ~ | |
glue("{Majuscule(ALaVille)}, la population {texteevoville}, passant de {Milliers(P06_POP)} à {Milliers(P16_POP)}, tandis qu'elle baissait dans le reste {DuDep}."), | |
TxEvolDep>= 2 ~ | |
glue("{Majuscule(ALaVille)}, la population {texteevoville}, passant de {Milliers(P06_POP)} à {Milliers(P16_POP)}, tandis qu'elle augmentait dans le reste {DuDep}."), | |
TRUE~ | |
glue("{Majuscule(ALaVille)}, la population {texteevoville}, passant de {Milliers(P06_POP)} à {Milliers(P16_POP)}, tandis qu'elle stagnait dans le reste {DuDep}.")), | |
Template2=case_when(TxEvolDep<= -2 ~ | |
glue("La population {DeLaVille} {texteevoville} entre 2006 et 2016 : elle est passée de {Milliers(P06_POP)} à {Milliers(P16_POP)} habitants, soit une évolution de {Virg(round(EvolPop2006_16,1))}%. Dans le même temps, {BonNomDeDep} voyait sa population baisser de {Virg(abs(round(TxEvolDep,1)))}%."), | |
TxEvolDep>= 2 ~ | |
glue("La population {DeLaVille} {texteevoville} entre 2006 et 2016 : elle est passée de {Milliers(P06_POP)} à {Milliers(P16_POP)} habitants, soit une évolution de {Virg(round(EvolPop2006_16,1))}%. Dans le même temps, {BonNomDeDep} voyait sa population augmenter de {Virg(round(TxEvolDep,1))}%."), | |
TRUE~ | |
glue("La population {DeLaVille} {texteevoville} entre 2006 et 2016 : elle est passée de {Milliers(P06_POP)} à {Milliers(P16_POP)} habitants, soit une évolution de {Virg(round(EvolPop2006_16,1))}%. Dans le même temps, {BonNomDeDep} voyait sa population stagner ({Milliers(P16_POPDep)} habitants en 2016)."))) | |
EnsemblesDesTextes<-rbind(GabaritsTextes%>%select(CODGEO,Template1), | |
GabaritsTextes%>%select(CODGEO,Template2)%>%rename(Template1=Template2)) | |
# On a donc 326 922 textes possibles. | |
# On va en sélectionner 1, au hasard | |
EnsemblesDesTextes$Chosen <- 0 | |
#On assigne un 1, au hasard pour l'ensemble des possibilités | |
EnsemblesDesTextes[-tapply(-seq_along(EnsemblesDesTextes$Template1),EnsemblesDesTextes$CODGEO,sample,size = 1), ]$Chosen <- 1 | |
TexteSelectionne<-EnsemblesDesTextes %>% arrange(CODGEO) | |
#On ne garde que celle sélectionnée | |
TexteSelectionne <- TexteSelectionne %>% filter(Chosen == 1)%>%select(-Chosen) | |
#Aperçu | |
TexteSelectionne[1:10,2] | |
# L'intéret : une meilleure lisibilité pour les lecteurs. | |
# Un apport plus sérieux : exemple : | |
TexteSelectionne$Template1[TexteSelectionne$CODGEO=="91692"] | |
TexteSelectionne$Template1[TexteSelectionne$CODGEO=="94043"] | |
write.csv(TexteSelectionne%>%arrange(CODGEO),"Exemple.csv",row.names = F,fileEncoding = "UTF-8") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment