# # source principale: https://www3.telepac.agriculture.gouv.fr/telepac/tbp/feader/afficher.action # # packages: FactoMineR,ggplot2,stringr library(FactoMineR) library(ggplot2) library(stringr) X=read.table("PAC_beneficiaires_2020_formatR.txt",header=T,colClasses=c("character","character","character","character","numeric")) # (Données PAC 2020) # # on sélectionne les bénéficiaires non anonymisés afin de pouvoir faire des rapprochements entre les différentes aides perçues Xnoms=subset(X, X$Nom_Raison.sociale!="XXX") # On ajoute la clef (Xnoms$Code.postal,Xnoms$Commune,Xnoms$Nom_Raison.sociale) mais elle n'est pas unique. Xnoms$key=paste(Xnoms$Code.postal,Xnoms$Commune,Xnoms$Nom_Raison.sociale) # On élimine donc les enregistrements présentant plus d'une occurence pour une même valeur de cette clef et pour une même rubrique. # On le fait pour chacune des 8 rubriques principales, afin de pouvoir rapprocher pour un bénéficiaire donné. # DPB SetDPB=table(Xnoms$key,Xnoms$Libellé.rubrique=="II.1-Aide-de-base-découplée-à-la-surface-(DPB)") SetDPB=as.data.frame(cbind(Key=rownames(SetDPB),SetDPB)) colnames(SetDPB)=c("Key","Nb_nonDPB","Nb_DPB") SetDPB$Nb_nonDPB=as.numeric(as.character(SetDPB$Nb_nonDPB)) SetDPB$Nb_DPB=as.numeric(as.character(SetDPB$Nb_DPB)) Xnoms_2=merge(Xnoms,SetDPB,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_DPB<2) nrow(Xnoms) # VER SetVER=table(Xnoms$key,Xnoms$Libellé.rubrique=="II.4-Soutien-pour-les-pratiques-respectant-le-verdissement") SetVER=as.data.frame(cbind(Key=rownames(SetVER),SetVER)) colnames(SetVER)=c("Key","Nb_nonVER","Nb_VER") SetVER$Nb_nonVER=as.numeric(as.character(SetVER$Nb_nonVER)) SetVER$Nb_VER=as.numeric(as.character(SetVER$Nb_VER)) Xnoms_2=merge(Xnoms,SetVER,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_VER<2) nrow(Xnoms) # ZSC SetZSC=table(Xnoms$key,Xnoms$Libellé.rubrique=="IV/A.18-Aide-aux-zones-soumises-à-des-contraintes-naturelles") SetZSC=as.data.frame(cbind(Key=rownames(SetZSC),SetZSC)) colnames(SetZSC)=c("Key","Nb_nonZSC","Nb_ZSC") SetZSC$Nb_nonZSC=as.numeric(as.character(SetZSC$Nb_nonZSC)) SetZSC$Nb_ZSC=as.numeric(as.character(SetZSC$Nb_ZSC)) Xnoms_2=merge(Xnoms,SetZSC,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_ZSC<2) nrow(Xnoms) # SPE SetSPE=table(Xnoms$key,Xnoms$Libellé.rubrique=="II.7-Aides-couplées-en-faveur-de-productions-spécifiques") SetSPE=as.data.frame(cbind(Key=rownames(SetSPE),SetSPE)) colnames(SetSPE)=c("Key","Nb_nonSPE","Nb_SPE") SetSPE$Nb_nonSPE=as.numeric(as.character(SetSPE$Nb_nonSPE)) SetSPE$Nb_SPE=as.numeric(as.character(SetSPE$Nb_SPE)) Xnoms_2=merge(Xnoms,SetSPE,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_SPE<2) nrow(Xnoms) # PHA SetPHA=table(Xnoms$key,Xnoms$Libellé.rubrique=="II.3-Soutien-supplémentaire-aux-premiers-hectares-(redistributif)") SetPHA=as.data.frame(cbind(Key=rownames(SetPHA),SetPHA)) colnames(SetPHA)=c("Key","Nb_nonPHA","Nb_PHA") SetPHA$Nb_nonPHA=as.numeric(as.character(SetPHA$Nb_nonPHA)) SetPHA$Nb_PHA=as.numeric(as.character(SetPHA$Nb_PHA)) Xnoms_2=merge(Xnoms,SetPHA,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_PHA<2) nrow(Xnoms) # AGC SetAGC=table(Xnoms$key,Xnoms$Libellé.rubrique=="IV/A.15-Soutien-agroenvironnement-climat") SetAGC=as.data.frame(cbind(Key=rownames(SetAGC),SetAGC)) colnames(SetAGC)=c("Key","Nb_nonAGC","Nb_AGC") SetAGC$Nb_nonAGC=as.numeric(as.character(SetAGC$Nb_nonAGC)) SetAGC$Nb_AGC=as.numeric(as.character(SetAGC$Nb_AGC)) Xnoms_2=merge(Xnoms,SetAGC,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_AGC<2) nrow(Xnoms) # PHY SetPHY=table(Xnoms$key,Xnoms$Libellé.rubrique=="IV/A.4-Soutien-aux-investissements-physiques") SetPHY=as.data.frame(cbind(Key=rownames(SetPHY),SetPHY)) colnames(SetPHY)=c("Key","Nb_nonPHY","Nb_PHY") SetPHY$Nb_nonPHY=as.numeric(as.character(SetPHY$Nb_nonPHY)) SetPHY$Nb_PHY=as.numeric(as.character(SetPHY$Nb_PHY)) Xnoms_2=merge(Xnoms,SetPHY,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_PHY<2) nrow(Xnoms) # BIO SetBIO=table(Xnoms$key,Xnoms$Libellé.rubrique=="IV/A.16-Aides-à-l'agriculture-biologique") SetBIO=as.data.frame(cbind(Key=rownames(SetBIO),SetBIO)) colnames(SetBIO)=c("Key","Nb_nonBIO","Nb_BIO") SetBIO$Nb_nonBIO=as.numeric(as.character(SetBIO$Nb_nonBIO)) SetBIO$Nb_BIO=as.numeric(as.character(SetBIO$Nb_BIO)) Xnoms_2=merge(Xnoms,SetBIO,by.x="key",by.y="Key",all.x=TRUE) nrow(Xnoms) Xnoms=subset(Xnoms_2,Xnoms_2$Nb_BIO<2) nrow(Xnoms) # Ajout de la clef "Commune" Xnoms$Key_Commune=paste(Xnoms$Code.postal,Xnoms$Commune) # # fabrication des tables correspondant aux 8 principales rubriques d'aide et fusion progressive des tables # XnomsDPB=subset(Xnoms,Xnoms$Libellé.rubrique=="II.1-Aide-de-base-découplée-à-la-surface-(DPB)") XnomsDPB=cbind(XnomsDPB[1:4],XnomsDPB[6]) colnames(XnomsDPB)=c("key","Nom_Raison.sociale_DPB","Commune_DPB","Code.postal_DPB","II.1_DPB") XnomsPHA=subset(Xnoms,Xnoms$Libellé.rubrique=="II.3-Soutien-supplémentaire-aux-premiers-hectares-(redistributif)") XnomsPHA=cbind(XnomsPHA[1:4],XnomsPHA[6]) colnames(XnomsPHA)=c("key","Nom_Raison.sociale_PHA","Commune_PHA","Code.postal_PHA","II.3_Premiers.hectares") XnomsDPB_PHA=merge(XnomsDPB,XnomsPHA,by="key") XnomsPHA=subset(Xnoms,Xnoms$Libellé.rubrique=="II.3-Soutien-supplémentaire-aux-premiers-hectares-(redistributif)") XnomsPHA=cbind(XnomsPHA[1:4],XnomsPHA[6]) colnames(XnomsPHA)=c("key","Nom_Raison.sociale_PHA","Commune_PHA","Code.postal_PHA","II.3_Premiers.hectares") XnomsDPB_PHA=merge(XnomsDPB,XnomsPHA,by="key") XnomsBIO=subset(Xnoms,Xnoms$Libellé.rubrique=="IV/A.16-Aides-à-l'agriculture-biologique") XnomsBIO=cbind(XnomsBIO[1:4],XnomsBIO[6]) colnames(XnomsBIO)=c("key","Nom_Raison.sociale_BIO","Commune_BIO","Code.postal_BIO","IV.A.16_BIO") XnomsDPB_PHA_BIO=merge(XnomsDPB_PHA,XnomsBIO,by="key",all.x=TRUE,all.y=TRUE) XnomsVER=subset(Xnoms,Xnoms$Libellé.rubrique=="II.4-Soutien-pour-les-pratiques-respectant-le-verdissement") XnomsVER=cbind(XnomsVER[1:4],XnomsVER[6]) colnames(XnomsVER)=c("key","Nom_Raison.sociale_VER","Commune_VER","Code.postal_VER","II.4_Verdissement") XnomsDPB_PHA_BIO_VER=merge(XnomsDPB_PHA_BIO,XnomsVER,by="key",all.x=TRUE,all.y=TRUE) XnomsZSC=subset(Xnoms,Xnoms$Libellé.rubrique=="IV/A.18-Aide-aux-zones-soumises-à-des-contraintes-naturelles") XnomsZSC=cbind(XnomsZSC[1:4],XnomsZSC[6]) colnames(XnomsZSC)=c("key","Nom_Raison.sociale_ZSC","Commune_ZSC","Code.postal_ZSC","IV.A.18_Contraintes.naturelles") XnomsDPB_PHA_BIO_VER_ZSC=merge(XnomsDPB_PHA_BIO_VER,XnomsZSC,by="key",all.x=TRUE,all.y=TRUE) XnomsSPE=subset(Xnoms,Xnoms$Libellé.rubrique=="II.7-Aides-couplées-en-faveur-de-productions-spécifiques") XnomsSPE=cbind(XnomsSPE[1:4],XnomsSPE[6]) colnames(XnomsSPE)=c("key","Nom_Raison.sociale_SPE","Commune_SPE","Code.postal_SPE","II.7_productions.spécifiques") XnomsDPB_PHA_BIO_VER_ZSC_SPE=merge(XnomsDPB_PHA_BIO_VER_ZSC,XnomsSPE,by="key",all.x=TRUE,all.y=TRUE) XnomsAGC=subset(Xnoms,Xnoms$Libellé.rubrique=="IV/A.15-Soutien-agroenvironnement-climat") XnomsAGC=cbind(XnomsAGC[1:4],XnomsAGC[6]) colnames(XnomsAGC)=c("key","Nom_Raison.sociale_AGC","Commune_AGC","Code.postal_AGC","IV.A.15_Agroenvironnement.climat") XnomsDPB_PHA_BIO_VER_ZSC_SPE_AGC=merge(XnomsDPB_PHA_BIO_VER_ZSC_SPE,XnomsAGC,by="key",all.x=TRUE,all.y=TRUE) XnomsPHY=subset(Xnoms,Xnoms$Libellé.rubrique=="IV/A.4-Soutien-aux-investissements-physiques") XnomsPHY=cbind(XnomsPHY[1:4],XnomsPHY[6]) colnames(XnomsPHY)=c("key","Nom_Raison.sociale_PHY","Commune_PHY","Code.postal_PHY","IV.A.4_PHY") Xnoms_All=merge(XnomsDPB_PHA_BIO_VER_ZSC_SPE_AGC,XnomsPHY,by="key",all.x=TRUE,all.y=TRUE) head(Xnoms_All) # les données de montant "NA" sont mises à zéro Xnoms_All[is.na(Xnoms_All)]=0 # Création du champ "Vert"="BIO+VER+AGC" Xnoms_All$Vert=Xnoms_All$IV.A.16_BIO+Xnoms_All$II.4_Verdissement+Xnoms_All$IV.A.15_Agroenvironnement.climat # Création du champ "Non_Vert"= "PHA+DPB" Xnoms_All$Non_Vert=Xnoms_All$II.3_Premiers.hectares+Xnoms_All$II.1_DPB # Création du champ "All_8" regroupant les 8 aides les plus importantes globalement Xnoms_All$All_8=Xnoms_All$Vert+Xnoms_All$Non_Vert+Xnoms_All$IV.A.18_Contraintes.naturelles+Xnoms_All$IV.A.4_PHY+Xnoms_All$II.7_productions.spécifiques # Ensuite, on identifie une clef {Nom de commune, Code postal} adéquate pour chaque bénéficiaire, en fonction des types de subvention octroyées: # la commune... Xnoms_All$Commune=ifelse(Xnoms_All$Commune_DPB==0,Xnoms_All$Commune_BIO,Xnoms_All$Commune_DPB) Xnoms_All$Commune=ifelse(Xnoms_All$Commune==0,Xnoms_All$Commune_SPE,Xnoms_All$Commune) Xnoms_All$Commune=ifelse(Xnoms_All$Commune==0,Xnoms_All$Commune_VER,Xnoms_All$Commune) Xnoms_All$Commune=ifelse(Xnoms_All$Commune==0,Xnoms_All$Commune_ZSC,Xnoms_All$Commune) Xnoms_All$Commune=ifelse(Xnoms_All$Commune==0,Xnoms_All$Commune_AGC,Xnoms_All$Commune) Xnoms_All$Commune=ifelse(Xnoms_All$Commune==0,Xnoms_All$Commune_PHY,Xnoms_All$Commune) Xnoms_All$Commune=ifelse(Xnoms_All$Commune==0,Xnoms_All$Commune_PHA,Xnoms_All$Commune) # puis le code postal associé Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal_DPB==0,Xnoms_All$Code.postal_BIO,Xnoms_All$Code.postal_DPB) Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal==0,Xnoms_All$Code.postal_PHA,Xnoms_All$Code.postal) Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal==0,Xnoms_All$Code.postal_ZSC,Xnoms_All$Code.postal) Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal==0,Xnoms_All$Code.postal_VER,Xnoms_All$Code.postal) Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal==0,Xnoms_All$Code.postal_SPE,Xnoms_All$Code.postal) Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal==0,Xnoms_All$Code.postal_PHY,Xnoms_All$Code.postal) Xnoms_All$Code.postal=ifelse(Xnoms_All$Code.postal==0,Xnoms_All$Code.postal_AGC,Xnoms_All$Code.postal) # On crée dans cette table la clef {Commune, Code postal} Xnoms_All$Key_Commune=paste(Xnoms_All$Code.postal,Xnoms_All$Commune) # head(Xnoms_All): head(Xnoms_All) *** * effectifs et montants des aides "vertes" et "non vertes" pour les bénéficiaires (non exclusifs) BIO et DPB sub_BIO_1=subset(Xnoms_All, Xnoms_All$IV.A.16_BIO>100000) sub_nonBIO_1=subset(Xnoms_All, Xnoms_All$II.1_DPB>100000) mean(sub_nonBIO_1$Vert) mean(sub_BIO_1$Vert) mean(sub_BIO_1$Non_Vert) mean(sub_nonBIO_1$Non_Vert) nrow(sub_BIO_1)*mean(sub_BIO_1$Vert) nrow(sub_BIO_1)*mean(sub_BIO_1$Non_Vert) nrow(sub_nonBIO_1)*mean(sub_nonBIO_1$Vert) nrow(sub_nonBIO_1)*mean(sub_nonBIO_1$Non_Vert) nrow(sub_nonBIO_1) nrow(sub_BIO_1) # # Nombre de bénéficiaires d'au moins l'une des 8 premières catégories de subvention. Nb_Benef_All=as.matrix(table(Xnoms_All$Key_Commune)) Nb_Benef_All=as.data.frame(cbind(Key_Commune=rownames(Nb_Benef_All),Nb_Benef_All)) head(Nb_Benef_All) # Nombre de bénéficiaires de la catégorie BIO parmi ceux qui perçoivent au moins l'une des 8 premières catégories de subvention. Nb_Benef_BIO=as.matrix(table(Xnoms_All$Key_Commune,Xnoms_All$IV.A.16_BIO>0)) Nb_Benef_BIO=as.data.frame(cbind(Key_Commune=rownames(Nb_Benef_BIO),Nb_Benef_BIO)) head(Nb_Benef_BIO) # Par commune, somme de la quantité "All_8" (somme des 8 premières subventions), # puis de la subvention BIO. Fusion des deux tables ByCommune_All=aggregate(Xnoms_All$All_8,by=list(Xnoms_All$Key_Commune),sum) ByCommune_BIO=aggregate(Xnoms_All$IV.A.16_BIO,by=list(Xnoms_All$Key_Commune),sum) colnames(ByCommune_All)=c("Key_Commune","All_8") colnames(ByCommune_BIO)=c("Key_Commune","IV.A.16_BIO") ByCommune=merge(ByCommune_All,ByCommune_BIO,by="Key_Commune") # Fusion avec les effectifs de bénéficiaires (totaux, et BIO) ByCommune=merge(ByCommune,Nb_Benef_All,by="Key_Commune") ByCommune=merge(ByCommune,Nb_Benef_BIO,by="Key_Commune") colnames(ByCommune)=c("Key_Commune","All_8","IV.A.16_BIO","Nb_tot","Nb_nonBIO","Nb_BIO") ByCommune$Nb_tot=as.numeric(as.character(ByCommune$Nb_tot)) ByCommune$Nb_nonBIO=as.numeric(as.character(ByCommune$Nb_nonBIO)) ByCommune$Nb_BIO=as.numeric(as.character(ByCommune$Nb_BIO)) # # Par commune, montant total des subventions All_All=aggregate(Xnoms$Montant.rubrique,by=list(Xnoms$Key_Commune),sum) colnames(All_All)=c("Key_Commune","Total_Subvention") ByCommune=merge(ByCommune,All_All,by="Key_Commune") # Par commune, montant des subventions reçues par les BIO All_BIO=aggregate(Xnoms_All$All_8,by=list(Xnoms_All$Key_Commune,Xnoms_All$IV.A.16_BIO>0),sum) All_BIO=subset(All_BIO,All_BIO$Group.2=="TRUE") colnames(All_BIO)=c("Key_Commune","if_BIO","All_8_BIO") ByCommune=merge(ByCommune,All_BIO,by="Key_Commune",all.x=TRUE) ByCommune$All_8_perBIO=ifelse(ByCommune$Nb_BIO==0,NA,ByCommune$All_8_BIO/ByCommune$Nb_BIO) ByCommune$All_8_per_nonBIO=ifelse(ByCommune$Nb_nonBIO==0,NA,(ByCommune$All_8-ByCommune$All_8_BIO)/ByCommune$Nb_nonBIO) Sub_ByCommune=na.omit(ByCommune) quantile(Sub_ByCommune$All_8_perBIO,probs=c(0.1*1:9)) quantile(Sub_ByCommune$All_8_per_nonBIO,probs=c(0.1*1:9)) # # SAU par commune # https://www.agreste.agriculture.gouv.fr/agreste-web/disaron/G_2012/detail/ # W=read.table("FDS_G_2012_2010.txt",header=T, sep= ";", dec = ".",encoding="UTF-8") head(W) # on sélectionne dans le fichier complet les enregistrements associés aux communes et portant sur la SAU par commune ("Ensemble des exploitations (hors pacages collectifs)") SubW_SAU=subset(W,W$COM!="............"&W$G_2012_LIB_DIM3=="Superficie correspondante (hectares)"&W$G_2012_LIB_DIM2=="Superficie agricole utilisée (1)"&W$G_2012_LIB_DIM1=="Ensemble des exploitations (hors pacages collectifs)") head(SubW_SAU) nrow(SubW_SAU) # 35711 entrées. # # Le problème est que les SAU sont données par code commune INSEE, alors que dans le fichier PAC, les communes sont identifiées par leur nom et leur code postal. # Il faut donc utiliser la correspondance entre le code commune INSEE et une clef {Nom de commune, Code postal) # INSEE_Code.postal=read.table("INSEE_Code.postal.txt",header=T) INSEE_Code.postal$Key_Commune=paste(INSEE_Code.postal$Code.postal,INSEE_Code.postal$Nom.commune) head(INSEE_Code.postal) SubW_SAU_2=merge(SubW_SAU,INSEE_Code.postal,by.x="COM",by.y="Code.INSEE",all.x=TRUE) SubW_SAU_2=subset(SubW_SAU_2,is.na(SubW_SAU_2$VALEUR)==FALSE) nrow(SubW_SAU_2) SubW_SAU_3=aggregate(SubW_SAU_2$VALEUR,by=list(SubW_SAU_2$Key_Commune),sum) nrow(SubW_SAU_3) colnames(SubW_SAU_3)=c("Key_Commune","SAU") SAU_PAC=merge(SubW_SAU_3,ByCommune,by="Key_Commune",all.x=TRUE,all.y=TRUE) nrow(SAU_PAC) # Elimination des communes sans SAU SAU_PAC=subset(SAU_PAC,is.na(SAU_PAC$SAU)==FALSE) # Elimination des communes sans montant PAC SAU_PAC=subset(SAU_PAC,is.na(SAU_PAC$All_8)==FALSE) nrow(SAU_PAC) SAU_PAC$SAU_per_farm=SAU_PAC$SAU/SAU_PAC$Nb_tot SAU_PAC$PAC_per_Ha_SAU=SAU_PAC$Total_Subvention/SAU_PAC$SAU write.csv(quantile(subset(SAU_PAC$SAU,SAU_PAC$Nb_BIO==0),probs=c(0.1*1:9)),"quantile_SAU_communes_sans_bio.csv") write.csv(quantile(subset(SAU_PAC$SAU,SAU_PAC$Nb_BIO>0),probs=c(0.1*1:9)),"quantile_SAU_communes_avec_bio.csv") write.csv(quantile(subset(SAU_PAC$SAU_per_farm,SAU_PAC$Nb_BIO>0),probs=c(0.1*1:9)),"quantile_SAU_per_farm_communes_avec_bio.csv") write.csv(quantile(subset(SAU_PAC$SAU_per_farm,SAU_PAC$Nb_BIO==0),probs=c(0.1*1:9)),"quantile_SAU_per_farm_communes_sans_bio.csv") write.csv(quantile(SAU_PAC$PAC_per_Ha_SAU,probs=c(0.1*1:9)),"PAC_per_Ha_SAU.csv") write.csv(quantile(subset(SAU_PAC$PAC_per_Ha_SAU,SAU_PAC$Nb_BIO==0),probs=c(0.1*1:9)),"PAC_per_Ha_SAU_communes_sans_bio.csv") write.csv(quantile(subset(SAU_PAC$PAC_per_Ha_SAU,SAU_PAC$Nb_BIO>0),probs=c(0.1*1:9)),"PAC_per_Ha_SAU_communes_avec_bio.csv") #médiane de PAC/ha SAU median(SAU_PAC$PAC_per_Ha_SAU) median(subset(SAU_PAC$PAC_per_Ha_SAU,SAU_PAC$Nb_BIO==0)) median(subset(SAU_PAC$PAC_per_Ha_SAU,SAU_PAC$Nb_BIO>0)) # # nombre de bénéficiaires percevant une aide BIO (mais pas exclusivement) et montants "Vert" et "Non vert" perçus table(Xnoms_All$IV.A.16_BIO>0) aggregate(cbind(Xnoms_All$Vert,Xnoms_All$Non_Vert),by=list(Xnoms_All$IV.A.16_BIO>0),mean) # nombre de bénéficiaires ne percevant aucune aide BIO, percevant une aide "Non_Verte"(DPB et PHA/aide aux premiers hectares), et montants "Vert" et "Non Vert" perçus table(Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0) aggregate(cbind(Xnoms_All$Vert,Xnoms_All$Non_Vert),by=list(Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0),mean) # Effectifs, pour ces bénéficiaires, de ceux qui bénéficients également d'autres aides table(Xnoms_All$IV.A.16_BIO>0&Xnoms_All$IV.A.18_Contraintes.naturelles>0) table(Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0&Xnoms_All$IV.A.18_Contraintes.naturelles>0) table(Xnoms_All$IV.A.16_BIO>0&Xnoms_All$II.7_productions.spécifiques>0) table(Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0&Xnoms_All$II.7_productions.spécifiques>0) # # médiane du montant de la subvention {montants "Vert" + "Non vert"} perçue par les bénéficiaires ne recevant aucune une aide BIO (et une aide positive pour le montant "Non Vert"). median(subset(Xnoms_All$Non_Vert+Xnoms_All$Vert,Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0)) # médiane du montant de la subvention {montants "Vert" + "Non vert"} perçue par les bénéficiaires percevant une aide BIO (mais pas exclusivement) median(subset(Xnoms_All$Non_Vert+Xnoms_All$Vert,Xnoms_All$IV.A.16_BIO>0&Xnoms_All$Non_Vert>0)) # quantiles write.table(quantile(subset(Xnoms_All$Vert,Xnoms_All$IV.A.16_BIO>0),probs=c(0.1*1:9)),"BIO_quantile_Vert.txt",dec=",") write.table(quantile(subset(Xnoms_All$Vert,Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0),probs=c(0.1*1:9)),"Non_BIO_quantile_Vert.txt",dec=",") write.table(quantile(subset(Xnoms_All$Non_Vert,Xnoms_All$IV.A.16_BIO>0),probs=c(0.1*1:9)),"BIO_quantile_Non_Vert.txt",dec=",") write.table(quantile(subset(Xnoms_All$Non_Vert,Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0),probs=c(0.1*1:9)),"Non_BIO_quantile_Non_Vert.txt",dec=",") write.table(quantile(subset(Xnoms_All$Non_Vert+Xnoms_All$Vert,Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0),probs=c(0.1*1:9)),"Non_BIO_quantile_Vert+Non_Vert.txt",dec=",") write.table(quantile(subset(Xnoms_All$Non_Vert+Xnoms_All$Vert,Xnoms_All$IV.A.16_BIO>0),probs=c(0.1*1:9)),"BIO_quantile_BIO_Vert+Non_Vert.txt",dec=",") write.table(quantile(subset(Xnoms_All$All_8,Xnoms_All$IV.A.16_BIO>0),probs=c(0.1*1:9)),"BIO_quantile_All_8.txt",dec=",") write.table(quantile(subset(Xnoms_All$All_8,Xnoms_All$IV.A.16_BIO==0&Xnoms_All$Non_Vert>0),probs=c(0.1*1:9)),"Non_BIO_quantile_All_8.txt",dec=",") # chargement du fichier de correspondance {départements <-> nouvelles régions} et des noms de région: RegDep=read.table("Regions_Depts.txt",colClasses=c("character","character","character","character","character","character","character"),header=T) RegNames=read.table("Regions.txt",colClasses=c("character","character","character","character","character","character"),header=T) # #création de la table récapitulative Z # Z=cbind(Xnoms_All[1],Xnoms_All[5],Xnoms_All[9],Xnoms_All[13],Xnoms_All[17],Xnoms_All[21],Xnoms_All[25],Xnoms_All[29],Xnoms_All[33],Xnoms_All[34],Xnoms_All[35]) # Le Code du département est extrait du code postal de la commune du bénéficiaire: # 2 chiffres si métropole, 3 si outremer Dept=as.character(ifelse(substr(Z$key,1,2)=="97",substr(Z$key,1,3),substr(Z$key,1,2))) Z=cbind(Z,Dept) colnames(Z)[12]="Dept" Z=merge(Z,RegDep,by.x="Dept",by.y="dep") Z=cbind(Z[2:13],Z[1],Z[16]) # Ecriture du fichier de fusion final write.table(Z,"fusion_8-aides.txt") # # ACP: PCA de FactoMineR # https://www.rdocumentation.org/packages/FactoMineR/versions/2.2/topics/plot.PCA # PCA1=PCA(cbind(Z[2:11],Z[13]),scale.unit=FALSE,ncp=5, quanti.sup=9:10, quali.sup=11,graph=FALSE) ACP1_2.4=plot(PCA1,axes=c(2,4),choix="varcor") ACP1_1.2=plot(PCA1,axes=c(1,2),choix="varcor") ACP1_2.3=plot(PCA1,axes=c(2,3),choix="varcor") pdf("ACP_PLOT%03d.pdf") ACP1_2.3 ACP1_2.4 ACP1_1.2 dev.off() # Extraction des coordonnées de la variable supplémentaire qualitative "Dept" (Département) U=as.data.frame(PCA1$quali.sup$coord) # # On ajoute les coordonnées géographiques moyennes des Départements # source des coordonnées géographiques: https://sql.sh/736-base-donnees-villes-francaises Geog=read.table("coord_geog_villes.txt",header=T) Dept2=ifelse(Geog$Dept=="2A"|Geog$Dept=="2B","20",as.character(Geog$Dept)) Geog=cbind(Geog,Dept2) GeogByDept=aggregate(cbind(Geog$Longitude_DEG,Geog$Latitude_DEG),by=list(Geog$Dept2),mean) colnames(GeogByDept)=c("Dept","Longitude_DEG","Latitude_DEG") U=cbind(Dept=substr(rownames(U),6,9),U) UGeog=merge(U,GeogByDept,by="Dept") # Relation {latitude, coordonnées des départements dans le premier plan de l'ACP} # les coordonnées des départements sur les axes de l'ACP sont les moyennes des coordonnées des bénéficiaires par département # on n'obtient pas le même résultat quand on utilise ces coordonnées et les aides moyennes perçues par département, # car dans la table Z, tout bénéficiaire a une coordonnée pour chacune des 8 aides prises en compte, # alors que dans le fichier initial ne figurent que les bénéficiaires d'une aide strictement positive ou négative(remboursement). # # Pour le graphique, sélection des départements de la métropôle # UGeogM=subset(UGeog,UGeog$Dept!="971"&UGeog$Dept!="972"&UGeog$Dept!="973"&UGeog$Dept!="974"&UGeog$Dept!="975"&UGeog$Dept!="976") write.table(UGeogM,"UGeogM_2020.txt",dec=",") PLOTGeog2=ggplot(UGeogM,aes(x=Latitude_DEG,y=Dim.2,label=Dept)) + geom_text(size = 4) PLOTGeog2=PLOTGeog2+labs(title="Dim.2 of PCA (~ DPB) vs. Latitude for Departments", x="Average Latitude of Dept", y="PCA Axis 2") PLOTGeog4=ggplot(UGeogM,aes(x=Latitude_DEG,y=Dim.4,label=Dept)) + geom_text(size = 4) PLOTGeog4=PLOTGeog4+labs(title="Dim.4 of PCA (~ BIO) vs. Latitude for Departments", x="Average Latitude of Dept", y="PCA Axis 4") pdf("PLOTGeog%03d.pdf") PLOTGeog2 PLOTGeog4 dev.off() # # Détermination des montants PAC ("8 aides") par région et par département de métropole UGeogR=merge(UGeog,RegDep,by.x="Dept",by.y="dep") # Attention, dans ZReg, les coordonnées géographiques ne sont pas attachées aux communes mais au département # Les coordonnées géographiques des régions sont donc les moyennes des coordonnées géographiques des départements qui la composent ZReg=merge(Z,UGeogR,by.x="Dept",by.y="Dept") ZReg=ZReg[1:21] # Agrégation par région: moyenne Z_byReg_1=aggregate(cbind(ZReg$Longitude_DEG,ZReg$Latitude_DEG,ZReg$Vert,ZReg$Non_Vert,ZReg$II.4_Verdissement,ZReg$IV.A.15_Agroenvironnement.climat,ZReg$IV.A.18_Contraintes.naturelles,ZReg$II.7_productions.spécifiques,ZReg$II.3_Premiers.hectares,ZReg$II.1_DPB,ZReg$IV.A.16_BIO,ZReg$IV.A.4),by=list(ZReg$reg),mean) colnames(Z_byReg_1)=c("Region","Longitude_DEG","Latitude_DEG","Vert","Non_Vert","II.4_Verdissement","IV.A.15_Agroenvironnement.climat","IV.A.18_Contraintes.naturelles","II.7_productions.spécifiques","II.3_Premiers.hectares","II.1_DPB","IV.A.16_BIO","IV.A.4_PHY") Z_byReg_1$Region=as.character(Z_byReg_1$Region) Z_byReg_1=merge(Z_byReg_1,RegNames,by.x="Region",by.y="reg") Z_byReg_1=cbind(Z_byReg_1[1:13],Z_byReg_1[16]) write.table(Z_byReg_1,"Z_byReg_mean.txt") # Agrégation par région: somme Z_byReg_2=aggregate(cbind(ZReg$Vert,ZReg$Non_Vert,ZReg$II.4_Verdissement,ZReg$IV.A.15_Agroenvironnement.climat,ZReg$IV.A.18_Contraintes.naturelles,ZReg$II.7_productions.spécifiques,ZReg$II.3_Premiers.hectares,ZReg$II.1_DPB,ZReg$IV.A.16_BIO,ZReg$IV.A.4),by=list(ZReg$reg),sum) colnames(Z_byReg_2)=c("Region","Vert","Non_Vert","II.4_Verdissement","IV.A.15_Agroenvironnement.climat","IV.A.18_Contraintes.naturelles","II.7_productions.spécifiques","II.3_Premiers.hectares","II.1_DPB","IV.A.16_BIO","IV.A.4_PHY") Z_byReg_2=merge(Z_byReg_2,RegNames,by.x="Region",by.y="reg") Z_byReg_2=cbind(Z_byReg_2[1],Z_byReg_2[14],Z_byReg_2[2:11]) write.table(Z_byReg_2,"Z_byReg_sum.txt") # Agrégation par département : moyenne Z_byDep_1=aggregate(cbind(ZReg$Longitude_DEG,ZReg$Latitude_DEG,ZReg$Vert,ZReg$Non_Vert,ZReg$II.4_Verdissement,ZReg$IV.A.15_Agroenvironnement.climat,ZReg$IV.A.18_Contraintes.naturelles,ZReg$II.7_productions.spécifiques,ZReg$II.3_Premiers.hectares,ZReg$II.1_DPB,ZReg$IV.A.16_BIO,ZReg$IV.A.4),by=list(ZReg$Dept),mean) colnames(Z_byDep_1)=c("Dept","Longitude_DEG","Latitude_DEG","Vert","Non_Vert","II.4_Verdissement","IV.A.15_Agroenvironnement.climat","IV.A.18_Contraintes.naturelles","II.7_productions.spécifiques","II.3_Premiers.hectares","II.1_DPB","IV.A.16_BIO","IV.A.4_PHY") Z_byDep_1=merge(Z_byDep_1,RegDep,by.x="Dept",by.y="dep") Z_byDep_1=cbind(Z_byDep_1[1],Z_byDep_1[17],Z_byDep_1[2:14]) write.table(Z_byDep_1,"Z_byDep_mean.txt") # Agrégation par département : somme Z_byDep_2=aggregate(cbind(ZReg$Vert,ZReg$Non_Vert,ZReg$II.4_Verdissement,ZReg$IV.A.15_Agroenvironnement.climat,ZReg$IV.A.18_Contraintes.naturelles,ZReg$II.7_productions.spécifiques,ZReg$II.3_Premiers.hectares,ZReg$II.1_DPB,ZReg$IV.A.16_BIO,ZReg$IV.A.4),by=list(ZReg$Dept),sum) colnames(Z_byDep_2)=c("Dept","Vert","Non_Vert","II.4_Verdissement","IV.A.15_Agroenvironnement.climat","IV.A.18_Contraintes.naturelles","II.7_productions.spécifiques","II.3_Premiers.hectares","II.1_DPB","IV.A.16_BIO","IV.A.4_PHY") Z_byDep_2=merge(Z_byDep_2,RegDep,by.x="Dept",by.y="dep") Z_byDep_2=cbind(Z_byDep_2[1],Z_byDep_2[15],Z_byDep_2[2:12]) write.table(Z_byDep_2,"Z_byDep_sum.txt") # # Effectifs de bénéficiaires recevant une aide BIO ou non, par région et par Département write.table(table(ZReg$reg,list=ZReg$IV.A.16_BIO>0),"RegBIO.txt") NbBio=as.matrix(table(Z$Dept,Z$IV.A.16_BIO>0)) NbBio=as.data.frame(cbind(Dept=rownames(NbBio),NbBio)) colnames(NbBio)=c("Dept","Non_BIO","BIO") Z_byDep_NbBio=merge(Z_byDep_1,NbBio,by="Dept") write.table(Z_byDep_NbBio,"Z_byDep_NbBio.txt")