Constructed variables

Date of birth of the first child

Variable créée par Marie-Caroline Compans / Variable created by Marie-Caroline Compans, 31/10/2018

Nom de variable / Variable name

DATE_NAI_99

Description

L’EDP comprend des trous de collecte pour l’enregistrement des naissances à l’état civil ayant eu lieu entre 1982 et 1997 pour les individus EDP nés les 2 et 3 octobre. On dispose cependant d’informations quant à l’année de naissance des enfants présents dans le ménage à partir du recensement exhaustif de 1999. Pour étudier un phénomène statistiquement rare, utiliser cette source en complément de l’état civil (base Descendance) peut être utile pour augmenter les effectifs, en ne se limitant pas qu’à ceux nés le 1er ou 4 octobre pour étudier la fécondité. Le programme ci-dessous s’applique à l’étude des naissances de rang un, mais peut être adapté aux rangs de naissance supérieurs.

Between 1982 and 1997, some birth certificates are missing for EDP individuals born on October 2th and 3th. However, information on the date of birth of children in the household is available from the 1999 exhaustive census. To study a statistically rare phenomenon, using this source along with birth registrations (‘Descendance’ database) may be useful to increase sample sizes to study fertility, not only those born on October 1st or 4th to study fertility. The program below applies to the study of first births, but it can be adapted to higher birth orders.

Fichiers concernés / datafiles used

Recensement/Census 1999: EDP_BE20nn_RP1999

Valeurs de la variable / Variable values

Numérique/Numeric

Variables utilisées en entrée / Required input variables

Identifiant EDP / Identifier : ID_DIFF

Année de naissance de l’enfant i du ménage de l’individu EDP / Year of birth of child i in the household : AN01E99--AN08E99

Mois de naissance de l’enfant i du ménage de l’individu EDP / Month of birth of child i in the household : MN01E99--MN08E99

Jour de naissance de l’enfant i du ménage de l’individu EDP / Day of birth of child i in the household : JN01E99--JN08E99

NB : i de 1 à 8 car à partir de 9, les dates de naissance renseignées ne sont pas cohérentes (ex : 9222)

Programme SAS OU Stata / Stata-code OR SAS-code Citation / Citing

Libname source "\\casd.fr\casdfs\Projets\XXXXXX\Data\EDP_EDP_20nn";

 

Data RP99; Set source.EDP_BE2016_RP1999;

Keep ID_DIFF AN01E99--AN08E99 MN01E99--MN08E99 JN01E99--JN08E99; run;

 

/* AN0i99 MN0i99 JN0i99 : Les numéros associés à un enfant i du ménage n’indiquent pas le rang de naissance. Ils sont classés par rang inverse de naissance. Par exemple, si un ménage compte deux enfants, l’enfant n°2 correspond à la première naissance tandis que l’enfant n°1 correspond au plus jeune.

On transpose donc chaque information pour obtenir la date de naissance du premier enfant.

On procède ainsi pour l’année, puis le mois, et enfin le jour de naissance: */

 

/* AN0i99 MN0i99 JN0i99 : Digits associated with a child in the household do not indicate birth orders. They are classified by reverse order. For instance, if there are two children in a household, child #2 is the oldest one (first birth), child #1 the youngest.

Each information is transposed to get the day of birth of the first child, first for the year of birth, before the month of birth and finally the day of birth */

 

  * ANNEE DE NAISSANCE;

Proc sort data=RP99; By ID_DIFF; Run;

* Transposée qui contient une colonne comportant les années de naissance des enfants présents dans le ménage de l’individu EDP / The transposition includes a column with years of birth of children in the household;

Proc transpose data=RP99 out=RP99_T (drop=_NAME_ _LABEL_);

                     By ID_DIFF;

                     Var AN01E99--AN08E99; run;

 

* Tri de la table par identifiant EDP et par année de naissance des enfants présents dans le ménage / Sorting the transposition by EDP identifier and the year of birth of children in the household;

Proc sort data=RP99_T; By ID_DIFF COL1; run;

* Suppression des observations sans enfant / Observations with no children are deleted;

Data RP99_ANNEE; Set RP99_T; IF COL1=’’ then delete;

* Calcul du rang de naissance / Birth order;

Proc sort data=RP99_ANNEE; By ID_DIFF;

Data RP99_ANNEE; Set RP99_ANNEE; 

* Rang; By id_diff; If first.id_diff then rang=1; Else rang+1;

               Rename COL1=ANNEE_1;

Run ;

 

* Premières naissances / First births;

Data RP99_FIRST_ANNEE; Set RP99_ANNEE; By ID_DIFF; If first.id_diff; Drop RANG;

* Suppression des tables inutiles / Needless tables are deleted;

PROC DATASETS Library=work; DELETE RP99_ANNEE RP99_T; run;

 

* Idem ensuite pour le mois et le jour / Idem for the month and day of birth ;

 

* MOIS DE NAISSANCE / MONTH OF BIRTH;

Proc transpose data=RP99 out=RP99_T (drop=_NAME_ _LABEL_) ;

      By ID_DIFF ;

      Var MN01E99--MN08E99 ;

Proc sort data=RP99_T; By ID_DIFF COL1; run;

Data RP99_MOIS; Set RP99_T; IF COL1=’’ then delete;

Proc sort data=RP99_MOIS; By ID_DIFF;

Data RP99_MOIS; Set RP99_MOIS; 

      By id_diff; If first.id_diff then rang=1; Else rang+1;

      Rename COL1=MOIS_1;

Run ;

 

      * Premières naissances / First births;

Data RP99_FIRST_MOIS; Set RP99_MOIS; By ID_DIFF; If first.id_diff;  Drop RANG;

PROC DATASETS Library=work; DELETE RP99_MOIS RP99_T; run;

 

* JOUR DE NAISSANCE / DAY OF BIRTH;

Proc transpose data=RP99 out=RP99_T (drop=_NAME_ _LABEL_) ;

      By ID_DIFF ;

      Var JN01E99--JN08E99;

Proc sort data=RP99_T; By ID_DIFF COL1; run;

Data RP99_JOUR; Set RP99_T; IF COL1=’’ then delete;

Proc sort data=RP99_JOUR; By ID_DIFF;

Data RP99_JOUR; Set RP99_JOUR; 

      By id_diff; If first.id_diff then rang=1; Else rang+1;

      Rename COL1=JOUR_1;

Run ;

 

      * Premières naissances/ First births;

Data RP99_FIRST_JOUR; Set RP99_JOUR; By ID_DIFF; If first.id_diff; Drop RANG;

PROC DATASETS Library=work; DELETE RP99_JOUR RP99_T RP99; run;

 

* FUSION des tables année, mois et jour des 1eres naissances;

* Tri des tables;

Proc sort data=RP99_FIRST_ANNEE; By ID_DIFF;

Proc sort data=RP99_FIRST_MOIS; By ID_DIFF;

Proc sort data=RP99_FIRST_JOUR; By ID_DIFF;

 

Data RP99_DATENAIS; MERGE RP99_FIRST_ANNEE

                       RP99_FIRST_MOIS; 

                       By ID_DIFF;

Data RP99_DATENAIS; MERGE RP99_DATENAIS

                 RP99_FIRST_JOUR; 

                       By ID_DIFF;

Run;                                                

 

* Suppression des tables inutiles ;

PROC DATASETS Library=work; DELETE RP99_FIRST_ANNEE RP99_FIRST_MOIS RP99_FIRST_JOUR; run;

 

* La table finale contient l’année, le mois et le jour de naissance du 1er enfant par individu EDP.

Compilation ces trois variables pour obtenir une naissance au format date SAS

The final table contains the year, month and day of birth of the first child in the household for every EDP individuals. These three variables can also be used to get a birth date in SAS date format.

 

Data RP99_DATENAIS; Set RP99_DATENAIS;

* Conversion au format numérique;

ANNEE1 = input(ANNEE_1,4.);   MOIS1=input(MOIS_1,2.) JOUR1=input(JOUR_1,2.);

* Conversion au format date;

DATE_NAI_99=MDY(MOIS1,JOUR1,ANNEE1); Format DATE_NAI_99  date9.; run;

* Suppression des variables inutiles;

Data RP99_DATENAIS; Set RP99_DATENAIS; Drop ANNEE_1 MOIS_1 JOUR_1; run;

 

Commentaire / Any other comment

Lorsque le (premier) enfant du ménage est né entre 1982 et 1997 (ANNEE1) pour les individus EDP nés les 2 et 3 octobre, DATE_NAI_99 peut être utilisée pour calculer l’âge au premier enfant. Sinon, il faut utiliser des bulletins d’état civil (table Descendance de l’EDP).

When the (first) child in the household was born between 1982 and 1997 (ANNEE1) for EDP individuals born on October 2th and 3th, DATE_NAI_99 can be used to calculate the age at first birth. Otherwise, you may use birth registrations (‘Descendance’).

Double counting individuals in censuses by type of municipality and associated weights

Variable créée par Benjamin Marteau, 19/09/2018

Nom de variable / Variable name

tcdouble

poids_double

Description

Ces variables identifient le type de commune (moins ou plus de 10000 habitants) dans lesquels se trouvent les individus comptés deux fois au recensement, et les poids associés à ces doubles comptes. Sont exclus les individus recensés plus de deux fois, ainsi que les doubles « purs » situés dans un même logement. Le programme contenu sous l’onglet « individus en double compte dans les enquêtes annuelles de recensement » doit être executé au prélable.

Fichiers concernés / datafiles used

EDP_B2016_EAR2004_INDIVIDU (EAR2004 à 2016)

EDP_BE2016_EAR2004_LOGEMENT (EAR2004 à 2016)

Valeurs de la variable / Variable values

tcdouble :

1 / Même petite commune (moins de 10000 habitants)

2 / Même grande commune (plus de 10000 habitants), même adresse

3 / Même grande commune, adresses différentes

4 / Petites communes différentes

5 / Petite et grande commune

6 / Grandes communes différentes

poids_double : continu

Variables utilisées en entrée / Required input variables

ID_DIFF / identifiant individuel

ID_LOG_DIFF / identifiant du logement

ANNEE_COL / année de collecte

ADR_DIFF / Adresse (créée en concaténant la commune, l’ilôt, le rang de l’adresse)

BI_EDP / Individu EDP

Programme SAS OU Stata / Stata-code OR SAS-code

** Espace de travail ;

libname EDP ’\\casd.fr\casdfs\Projets\AQRDEDA\Data\EDP_EDP_2016’ ;

 

** On récupère la variable doublecompte déjà créée dans l’onglet « individus en double compte dans les enquêtes annuelles de recensement » et la base de données EAR0416 ;

 

data EAR0416 ; set EAR0416 ; run ; ** Base de données créée lors de la creation de la variable doublecompte;

 

** Création d’un fichier avec uniquement les doubles comptes ;

data doublecomptecom ; set EAR0416 ;

if doublecompte in (0,.) then delete ;

run ;

 

proc sort data = doublecomptecom ; by ANNEE_COL ID_DIFF poids_ea ;

 

** Fichier détaillant la répartition des bulletins doubles par type de commune ;

data doublecomptecombis ; set doublecomptecom (keep = ANNEE_COL ID_DIFF ADR_DIFF DEPCOM_CODE TC BI_EDP poids_ea poids_ea_cale); by ANNEE_COL ID_DIFF poids_ea ;

keep ID_DIFF ANNEE_COL tcdouble rappoids prodpoids moypoids ;

length iddiff1-iddiff2 $10 adrdiff1-adrdiff2 $16 depcom1-depcom2 $5 tc1-tc2 $1 ;

retain nbid 0 iddiff1-iddiff2 "" adrdiff1-adrdiff2 "" depcom1-depcom2 ""  tc1-tc2 "" poids1-poids2 0 rappoids1-rappoids2 0 prodpoids1-prodpoids2 0 moypoids1-moypoids2 0

tcdouble1-tcdouble2 0 ;

array viddiff(2) $ iddiff1-iddiff2 ;

array vadrdiff(2) $ adrdiff1-adrdiff2 ;

array vdepcom(2) $ depcom1-depcom2 ;

array vtc(2) $ tc1-tc2 ;

array vtcdouble(2) tcdouble1-tcdouble2 ;

array vpoids(2) poids1-poids2 ;

array vrappoids(2) rappoids1-rappoids2 ;

array vprodpoids(2) prodpoids1-prodpoids2 ;

array vmoypoids(2) moypoids1-moypoids2 ;

if BI_EDP=’1’ then do ;

if first.ID_DIFF then do ;

                nbid=0 ;

                do i = 1 to 2 ;

                viddiff(i)="" ; vadrdiff(i)="" ; vdepcom(i)="" ; vtc(i)= "" ; vtcdouble(i)=0 ; vpoids(i)=0 ; vrappoids(i)=0 ; vprodpoids(i)=0 ; vmoypoids(i)=0;

                end ;

end ;

nbid=nbid+1 ;

viddiff(nbid)=ID_DIFF ;

vadrdiff(nbid)=ADR_DIFF ;

vdepcom(nbid)=DEPCOM_CODE ;

vtc(nbid)=TC ;

vpoids(nbid)=poids_ea ;

if last.ID_DIFF then do ;

                do i = 1 to nbid ;

                               do j = 1 to nbid ;

                                               if vdepcom(i) = vdepcom(j) then do ;

                                                               if vtc(i)=vtc(j) & vtc(i)="1" then vtcdouble(i)=1; ** Même petite commune ;

                                                               else if vtc(i)=vtc(j) & vtc(i)="2" then do ;

                                                                                              if ANNEE_COL>2009 & vadrdiff(i)=vadrdiff(j) then vtcdouble(i)=2 ; ** Même grande commune, mm adresse ;

                                                                                              else if ANNEE_COL>2009 & vadrdiff(i) NE vadrdiff(j) then vtcdouble(i)=3 ; ** Même grande commune, adresse diff ;

                                                                                              if ANNEE_COL<=2009 then vtcdouble(i)=2 ; ** Même grande commune ;

                                                                               end ;

                                                               end ;

                                               if vdepcom(i) NE vdepcom(j) then do ;

                                               if vtc(i)=vtc(j) & vtc(i)="1" then vtcdouble(i)=4 ; ** Petites communes différentes ;

                                               else if vtc(i) NE vtc(j) & vtc(i)="1" then vtcdouble(i)=5 ; ** 1er logement : petite commune, 2eme : grande com ;

                                               else if vtc(i) NE vtc(j) & vtc(i)="2" then vtcdouble(i)=5 ; ** 1er log : grande commune, 2eme log : petit com ;

                                               else if vtc(i)=vtc(j) & vtc(i)="2" then vtcdouble(i)=6 ; ** Grandes communes différentes;

                                               end ;

                                               vrappoids(i)=vpoids(j)/vpoids(i) ; ** Rapport de poids entre les deux bulletins ;

                                               vprodpoids(i)=vpoids(i)*vpoids(j); ** Produit des poids entre les deux bulletins ;

                                               vmoypoids(i)=(vpoids(i)+vpoids(j))/2 ; ** Moyenne des poids entre les deux bulletins ;

                               end ;

                end ;

                do i = 1 to nbid ;

                tcdouble=vtcdouble(1) ;

                iddiff=viddiff(i) ;

                rappoids=vrappoids(1) ;

                prodpoids=vprodpoids(1) ;

                moypoids=vmoypoids(1) ;

                output ;

                end ;

end ;

end ;

run ;

 

proc sort data = doublecomptecom ; by ANNEE_COL ID_DIFF ;

proc sort data = doublecomptecombis ; by ANNEE_COL ID_DIFF ;

 

** Si les deux bulletins sont situés dans la même grande commune et que le rapport de poids est 1, alors on suppose qu’ils sont à la même adresse

** Valable pour les années avant 2009 ou on n’a pas l’info de la meme adresse ;

data doublecompteall ; merge doublecomptecom doublecomptecombis ; by ANNEE_COL ID_DIFF ;

if tcdouble=2 & rappoids NE 1 & annee_col<=2009 then tcdouble=3 ;

run ;

 

** Application d’une variable de pondération en fonction de la probabilité de sélection des individus dans un logement ;

data doublecompteall ; set doublecompteall ;

if nobs=1 then do ;

                if tcdouble in (1,2) then poids_double=moypoids ; ** Même commune, poids moyen ;

                if tcdouble in (3,4,5,6) then poids_double=prodpoids ; ** Communes différentes ou addresses différentes: produit des poids ;

end ;

run ;

 

** Pour avoir la répartition par type de commune des doubles comptes ;

proc freq data = doublecompteall ; where nobs=1 ; table ANNEE_COL*tcdouble / missing ; run ;

proc freq data = doublecompteall ; where nobs=1 ; table ANNEE_COL*tcdouble / missing ; weight poids_double ; run ;

 

Commentaires / Comments

Pour plus d’informations sur les pondérations et les méthodes d’échantillonnage : https://www.insee.fr/fr/statistiques/fichier/2414232/fiche-ponderation.pdf

 

Double counting individuals in censuses

Variable créée par Benjamin Marteau, 19/09/2018

Nom de variable / Variable name

doublecompte

Description

Cette variable identifie les individus qui sont recensés deux fois au cours d’une même vague annuelle de recensement (EAR). Sont exclus les individus recensés plus de deux fois, ainsi que les doubles « purs » situés dans un même logement.

Fichiers concernés / datafiles used

EDP_B2016_EAR2004_INDIVIDU (EAR2004 à 2016)

EDP_BE2016_EAR2004_LOGEMENT (EAR2004 à 2016)

Valeurs de la variable / Variable values

1 / Individu en double compte

0 / Pas en double compte

Variables utilisées en entrée / Required input variables

ID_DIFF / identifiant individuel

ID_LOG_DIFF / identifiant du logement

ANNEE_COL / année de collecte

Poids_ea / Poids associés à l’enquête

DEPCOM_CODE, CIL, IRIS_ILOT, FIL, ADR_RANG / Adresse

BI_EDP / Individu EDP ou non

Programme SAS OU Stata / Stata-code OR SAS-code

** Espace de travail ;

libname EDP ’\\casd.fr\casdfs\Projets\AQRDEDA\Data\EDP_EDP_2016’ ;

 

** Concaténation de tous les fichiers individus et logements des EAR de 2004 à 2016 ;

 

** Macro pour importer les bases individus ;

%macro importEAR;

%do i=2004 %to 2016;

data EAR&i ; set EDP.EDP_BE2016_EAR&i._INDIVIDU ;

run;

 %end;

 %mend;

 %importEAR;

 

** Macro pour importer les bases logement ;

%macro importEAR;

%do i=2004 %to 2010;

data EARlog&i ; set EDP.EDP_BE2016_EAR&i._LOGEMENT ;

 %end;

 %mend;

 %importEAR;

 

**## CIL, FIL, DEPCOM_CODE, LOG_RANG ne sont pas disponibles entre 2004 et 2009 ** ;

%macro importEAR;

%do i=2010 %to 2017;

data EARlog&i ; set EDP.EDP_BE2016_EAR&i._LOGEMENT ;

ADR_DIFF=DEPCOM_CODE||CIL||IRIS_ILOT||FIL||ADR_RANG ;

 %end;

 %mend;

 %importEAR;

 

** Macro merge Individu et Logement ;

%macro mergeEARindlog;

%do i=2004 %to 2016;

 proc sort data=EAR&i; by ID_LOG_DIFF ;run;

  proc sort data=EARlog&i; by ID_LOG_DIFF ;run;

  data EAR&i; merge EAR&i EARlog&i;by ID_LOG_DIFF ;run;

 %end;

    %mend;

 

 %mergeEARindlog;

 

** On concatène tous les fichiers ;

data EAR0416 ; set EAR2004 EAR2005 EAR2006 EAR2007 EAR2008 EAR2009 EAR2010 EAR2011 EAR2012 EAR2013 EAR2014 EAR2015 EAR2016 ; run ;

 

***************** Indicateur de bulletins multiples, à poids non nuls ******************** ;

 

data EAR0416 ; set EAR0416 ;

**** On élimine les jeunes en résidence étudiant avec poids 0, en double compte, qui ne sont pas censés être recensés en logement collectif ;

** On garde dans la base les nouveaux-nés à poids nul ;

if CPOP=’14’ & poids_ea=0 & CATL_X=’’ then delete ; run ; ** 21883 observations supprimées ;

run ;

 

** Indicateur du nombre de bulletins de recensement par individu ;

proc sort data = EAR0416 ; by ANNEE_COL ID_DIFF ID_LOG_DIFF ;

 

data nmultiple (keep = ID_DIFF nmult ANNEE_COL) ; set EAR0416 ; by ANNEE_COL ID_DIFF ;

retain nmult 0 ; ** Nombre de bulletins multiples ;

if BI_EDP=’1’ then do ;

if first.ID_DIFF then nmult=0 ;

if ID_DIFF NE = ’’ then nmult=nmult+1 ;

end ;

ID_DIFF = ’’ then delete ;

if last.ID_DIFF then output ;

run ;

 

** On fusionne la table des individus de l’EAR 2004-2016 avec l’indicateur du nombre de bulletins multiples ;

proc sort data = EAR0416 ; by ANNEE_COL ID_DIFF ;

proc sort data =  nmultiple ; by ANNEE_COL ID_DIFF ;

data EAR0416 ; merge EAR0416 nmultiple ; by ANNEE_COL ID_DIFF ; run ;

 

 

***************** Individus en double compte ************************ ;

** On ne prend pas les doublons dans le même logement ni les bulletins triples ou plus ;

data EAR0416 ; set EAR0416 ; by ANNEE_COL ID_DIFF ID_LOG_DIFF ;

if BI_EDP=’1’ then do ;

nobs=0 ;if first.ID_DIFF then do ; nobs=1 ; end ; ** Avoir une variable hiérarchique pour sélectionner un seul individu lorsqu’il est double ;

if first.ID_LOG_DIFF then do ; _doubledecl=0 ; end ;

if (first.ID_DIFF and not last.ID_DIFF) or (not first.ID_DIFF) then do ;

if (first.ID_LOG_DIFF and not last.ID_LOG_DIFF) or (not first.ID_LOG_DIFF) then _doubledecl=1 ; ** Indicateur de doubles bulletins dans le meme logement ;

doubledecl_id=_doubledecl ;

drop _doubledecl ;

end ;

doublecompte=0 ;

if nmult=2 then doublecompte=1 ;

end ;

if doubledecl_id=1 then doublecompte=0 ; ** Les doublons purs sont éliminés ;

run ;

 

** Pour avoir le nombre d’individus en double compte par année de collecte ;

proc freq data = EAR0416 ; where BI_EDP=’1’ & nobs=1 ; table ANNEE_COL*doublecompte/ missing ; run ;

 

Commentaires / Comments

Pour plus d’informations sur les pondérations et les méthodes d’échantillonnage : https://www.insee.fr/fr/statistiques/fichier/2414232/fiche-ponderation.pdf

5-year departemental mobility in the EDP based on annual census survey

Variable créée par Matthieu Solignac, mars 2018

Nom de variable / Variable name

mobdep5y

Description

Mobilité départementale à 5 ans dans l’EDP à partir des enquêtes annuelles de recensement

Exemple donné pour la mobilité entre les recensements de 2009 (EAR 2007-2011) et 2014 (EAR 2012-2016), mais il peut être directement adapté aux autres EAR (moyennant une adaptation de l’étape III 2) pour les comparaisons entre recensements (ie agrégation de 5 EAR)).

Fichiers concernés / datafiles used

EDP 2016, EAR individus 2007-2016

Valeurs de la variable / Variable values

0 même département de résidence

1 département de résidence différent

 

Variables utilisées en entrée / Required input variables

Pour le RP 2014 (EAR 2012-2016)

ID_DIFF

ANNEE_COL

BI_EDP

POIDS_PANEL_5

DEPCOM_CODE

 

Pour le RP 2009 (EAR 2007-2011)

ID_DIFF

ANNEE_COL

BI_EDP

I_PANEL_5

DEPCOM_CODE

 

Afin de corriger une erreur de pondération (POIDS_PANEL_5) affectant les DOM, trois variables supplémentaires sont nécessaires.

REG_CODE

IRIS_ILOT

TC

Dès l’EDP 2017, cette correction ne sera plus nécessaire.

 

Programme SAS OU Stata / Stata-code OR SAS-code

/*

Objectif immédiat : mesure de la mobilité départementale à 5 ans

 

Objectif associé : permettre l'étude de la mobilité résidentielle en disposant des caractéristiques des individus

avant leur mobilité. Suivi au niveau individuel de l'évolution des caractéristiques des individus

d'un recensement à un autre, à partir d'un échantillon représentatif de la population

 

Enjeu : l'architecture du recensement continu qui fait que l'observation d'un individu

et sa réobservation dépendent directement de son lieu de résidence, de son logement, de sa mobilité résidentielle...

 

Méthode : conditionnellement à la présence dans 2 EAR distante de 5 ans (N et N+5),

utilisation de la pondération spécifique élaborée par l'INSEE (POIDS_PANEL_5)

tenant compte des probabilités d'être interrogé

 

RP considérés : 2009 et 2014

Echantillon constituté des individus observés à la fois dans EAR N et N+5

 

Exploitation possible N/N+5:

-vague par vague

-d'un RP à un autre en agrégeant 5 vagues

*/

 

 

 

/*========================================================================================

I Constitution des 2 RP 2009 et 2014 à partir de leurs 5 EAR respectives

==========================================================================================*/

 

libname EDP2016 "\\casd.fr\casdfs\Projets\DSPATIN\Data\EDP_EDP_2016";

 

 

/*==============

RP 2014

constitué des EAR 2012-2016

==============*/

%macro ear(year);

data ear&year.;

set EDP2016.edp_be2016_ear&year._individu;

keep ID_DIFF ANNEE_COL BI_EDP /*identifiant, annee de collecte, indicatrice individu EDP*/

POIDS_PANEL_5  /*variable de pondération a 5 ans*/

IRIS_ILOT /*infos nécessaires pour correction de l'erreur de ponderation DOM*/

DEPCOM_CODE  /*Variable d'intérêt : département de résidence*/

;

run;

proc sort data=ear&year.;

by ID_DIFF;

run;

%mend;

%ear(2016)

%ear(2015)

%ear(2014)

%ear(2013)

%ear(2012)

 

*merge sans écraser potentielles observations d'un même individu sur plusieurs des vagues du RP2014;

data rp2014;

merge ear2012 ear2013;

by ID_DIFF ANNEE_COL;

run;

data rp2014;

merge rp2014 ear2014;

by ID_DIFF ANNEE_COL;

run;

data rp2014;

merge rp2014 ear2015;

by ID_DIFF ANNEE_COL;

run;

data rp2014;

merge rp2014 ear2016;

by ID_DIFF ANNEE_COL;

run;

 

*adaptation du nom des variables;

data rp2014;

set rp2014;

rename ANNEE_COL=ANNEE_5 BI_EDP=BI_EDP_5 DEPCOM_CODE=DEPCOM_CODE_5 IRIS_ILOT=IRIS_5;

run;

*on ne garde que les individus EDP;

data rp2014;

set rp2014;

if BI_EDP_5 ="1";

run;

data rp2014;

set rp2014;

drop BI_EDP_5;

run;

 

 

 

/*=============================================================

RP 2009

constitué des EAR 2007-2011

================================================================*/

%macro ear(year);

data ear&year.;

set EDP2016.edp_be2016_ear&year._individu;

keep ID_DIFF ANNEE_COL BI_EDP /*identifiant, annee de collecte, indicatrice individu EDP*/

I_PANEL_5 /*sous-echantillon d'analyse à 5 ans correspondant à la pondération*/

REG_CODE IRIS_ILOT TC /*infos nécessaires pour correction de l'erreur de ponderation DOM*/

DEPCOM_CODE  /*Variable d'intérêt : département de résidence*/

;

run;

proc sort data=ear&year.;

by ID_DIFF;

run;

%mend;

%ear(2011)

%ear(2010)

%ear(2009)

%ear(2008)

%ear(2007)

 

*merge;

data rp2009;

merge ear2007 ear2008;

by ID_DIFF ANNEE_COL;

run;

data rp2009;

merge rp2009 ear2009;

by ID_DIFF ANNEE_COL;

run;

data rp2009;

merge rp2009 ear2010;

by ID_DIFF ANNEE_COL;

run;

data rp2009;

merge rp2009 ear2011;

by ID_DIFF ANNEE_COL;

run;

 

*adaptation du nom des variables;

data rp2009;

set rp2009;

rename ANNEE_COL=ANNEE_0 BI_EDP=BI_EDP_0 DEPCOM_CODE=DEPCOM_CODE_0 REG_CODE=REG_0 IRIS_ILOT=IRIS_0 TC=TC_0;

run;

*on ne garde que les individus EDP;

data rp2009;

set rp2009;

if BI_EDP_0="1";

run;

data rp2009;

set rp2009;

drop BI_EDP_0;

run;

 

 

 

 

 

/*========================================================================================

II Constitution de la base d'analyse N/N+5

==========================================================================================*/

 

data rp2014;

set rp2014;

if ANNEE_5="2012" then vague=1;

else if ANNEE_5="2013" then vague=2;

else if ANNEE_5="2014" then vague=3;

else if ANNEE_5="2015" then vague=4;

else if ANNEE_5="2016" then vague=5;

run;

data rp2009;

set rp2009;

if ANNEE_0="2007" then vague=1; /*avant quadruplement de l'echantillon*/

else if ANNEE_0="2008" then vague=2;

else if ANNEE_0="2009" then vague=3;

else if ANNEE_0="2010" then vague=4;

else if ANNEE_0="2011" then vague=5;

run;

proc sort data=rp2014;

by vague ID_DIFF;

run;

proc sort data=rp2009;

by vague ID_DIFF;

run;

 

*Appariement vague par vague, conditionné à la présence à la fois aux EAR N et N+5 (ie I_PANEL_5=1 en N et POIDS_PANEL_5 non nul en N+5);

data base0914;

merge rp2014(in=A) rp2009;

by vague ID_DIFF;

if A=1;

run;

data base0914;

set base0914;

if POIDS_PANEL_5^=. then base0914=1;

else base0914=0;

run;

data base0914;

set base0914;

if base0914=1 and I_PANEL_5=1;

run;

 

 

 

/*========================================================================================

III Correction/adaptation de la pondération

A noter que cette étape ne sera pas forcément nécessaire à l'avenir :

la correction

1) sera directement corrigé à partir de la version 2017 d'EDP

l'adaptation

2) est spécifique aux recensements combinant des EAR avant/après augmentation de l'échantillon:

ne sera pas nécessaire pour l'analyse de la mobilité entre les RP 2010 et 2015

==========================================================================================*/

/*

constitution de la base d'analyse et de ses pondération:

-correction d'une erreur de pondération affectant certains domiens (sur les recommandations de l'INSEE): création de POIDS_PANEL_5c

-création d'une pondération pour l'analyse entre RP: adaptation de la pondération 2007 (dernière année avant augmentation de l'échantillon) : création de poids0914

 

Output: 2 pondérations adaptées à 2 types d'analyse

1)analyse vague par vague (de 2007-2012 à 2011-2016): POIDS_PANEL_5c

2)analyse d'un RP à un autre (agregation des 5 vagues): poids0914

*/

 

*1) correction erreur dom;

data base0914;

set base0914;

if (REG_0="01" or REG_0="02" or REG_0="03" or REG_0="04") and DEPCOM_CODE_0=DEPCOM_CODE_5 and TC_0="2" and IRIS_0=IRIS_5 then pbpoids=1;

else pbpoids=0;

run;

data base0914;

set base0914;

if pbpoids=1 then POIDS_PANEL_5c=POIDS_PANEL_5/5;

else POIDS_PANEL_5c=POIDS_PANEL_5;

run;

 

*2) compensation taille vague 2007 (denière année avant augmentation de l'échantillon) pour analyse entre RP 2009 et 2014;

data base0914;

set base0914;

if vague=1 then poids0914=POIDS_PANEL_5c*4;

else poids0914=POIDS_PANEL_5c;

run;

 

 

 

 

 

 

 

 

/*========================================================================================

IV Application : étude de la mobilité départementale (territoire considéré: France metropolitaine + DOM - Mayotte)

============================================================================================*/

 

*départements de résidence: dep_0 et dep_5 ;

data base0914;

set base0914;

dep_0=substr(DEPCOM_CODE_0,1,2);

dep_5=substr(DEPCOM_CODE_5,1,2);

run;

 

*distinction France metropolitaine (loc0=0, loc5=0) / DOM sans Mayotte (loc0=1, loc5=1);

data base0914;

set base0914;

if dep_5="2A" or dep_5="2B" then loc5=0;

else if 1<=dep_5<=95  then loc5=0; /*0 France metropolitaine*/

else if 971<=substr(DEPCOM_CODE_5,1,3)<=974 then loc5=1; /*1 DOM - Mayotte*/

else loc5=9;

if dep_0="2A" or dep_0="2B" then loc0=0;

else if 1<=dep_0<=95  then loc0=0;

else if 971<=substr(DEPCOM_CODE_0,1,3)<=974 then loc0=1;

else loc0=9;

run;

 

*Mobilite departementale: mobdep5y ;

data base0914;

set base0914;

where (loc0=0 or loc0=1) and (loc5=0 or loc5=1); /*France métrop + DOM- Mayotte*/

if dep_0^=dep_5 then mobdep5y=1;

else mobdep5y=0;

run;

 

 

*Résultats;

 

*1) entre les RP 2009 et 2014;

proc freq data=base0914;

where (loc0=0 or loc0=1) and (loc5=0 or loc5=1);

table mobdep5y;

weight poids0914;

run;

 

*2) entre chacune des vagues N/N+5;

proc sort data=base0914;

by vague;

run;

proc freq data=base0914;

where (loc0=0 or loc0=1) and (loc5=0 or loc5=1);

table mobdep5y;

by vague;

weight POIDS_PANEL_5c;

run;

 

Références / References

Contribution au chapitre « Mobilité et emploi » (Partie III, chapitre 1) du rapport annuel de l’Observatoire des territoires du Commissariat générale à l’égalité des territoires (CGET), a priori publié en accès libre d’ici la rentrée

 

Commentaire / Any other comment

Au-delà de l’analyse de la mobilité résidentielle, ce programme peut ainsi être adapté à toute autre variable qu’on souhaite analyser en s’appuyant sur le panel EDP constitué par les enquêtes annuelles de recensement (EAR). Il permet le suivi d’un échantillon d’individus EDP dans le recensement continu entre l’année N et l’année N+5, conditionnellement à l’observation des individus à ces 2 dates, en tenant compte des différences de probabilités d’observation liées à la commune et au type de logement de résidence (au moyen de la pondération POIDS_PANEL_5).

Cette durée de 5 ans correspond au délai de réinterrogation de la même vague dans les enquêtes annuelles de recensement (EAR). En effet, les individus de l’EAR de l’année N demeurant dans le même logement (ou la même commune de moins de 10 000 habitants) ne peuvent être observés à nouveau que lors de l’EAR de l’année N+5. Les cas de mobilité sont alors appréhendés à partir des individus qui, en dépit de leur changement de résidence, sont restés dans des logements interrogés lors de la même vague. Cette stratégie n’est donc pas forcément généralisable à des analyses de la mobilité à un niveau géographique très fin[1].

 

A noter que par construction, cette stratégie n’est pas forcément adaptée pour l’étude de certains groupes, comme les immigrés (exclusion des individus qui entrent et des individus qui sortent du territoire au cours de la période), les plus âgés (affectés par des proportions de décès importants), les évolutions intervenant avant l’âge de 5 ans…



[1] En effet, des perturbations pourraient apparaître si les individus d’une commune de moins de 10 000 habitants (resp. d’un quartier d’une commune plus grande) avaient une propension particulière (ie sans commune mesure avec ce qui est observé parmi les communes équivalentes ou quartiers des mêmes communes recensés lors de la même vague) à déménager dans une autre commune de moins de 10 000 habitants (resp. dans un quartier d’une commune plus grande) recensée lors d’une vague d’interrogation différente.

Occupancy status of the dwelling

Variable créée par Giulia Ferrari, 28/06/2018

Nom de variable / Variable name

Statut d’occupation du logement / Occupancy status of the dwelling

Description

Cette variable permet de distinguer le statut d’occupation d’un logement entre les 3 catégories de :1) propriétaire, 2) locataire et 3) locataire HLM/SEM. This variable distinguishes dwelling occupancy status in 3 categories : 1) owner, 2) private renter and 3) public renter.

Fichiers concernés / datafiles used

edp_be2016_fisc_logement_2016 (le programme vaut aussi avec les autres années fiscales et les versions précédentes de la base d’étude). (the program may be used also with other fiscal years and with previous versions of the database).

Valeurs de la variable / Variable values

1) propriétaire/ owner

2) locataire / private renter

3) locataire HLM/SEM / public renter

Variables utilisées en entrée / Required input variables

OCC /HLM/SEM

OU variables déjà construites et documentées sur le site / OR other constructed variables

Programme Stata / Stata-code

gen occ_status=2

*(voir les commentaires) (see comments)

replace occ_status=1 if occ==”P” | occ==”G”

replace occ_status=3 if occ!=”P” & hlmsem!=””

label define occ 1 “propriétaire” 2 ” locataire ” 3 ” locataire HLM/SEM ”, modify

label values occ_status occ

Commentaire / Any other comment

Dans cette spécification, la variable inclut les occupants à titre gratuit parmi les propriétaires, mais rien n’empêche de la garder dans une catégorie séparée.

The variable with the current specification includes occupants on a free basis (occ=”G”) among the owners, however it might be considered in a specific category if needed.

Age of father at birth of child

Variable créée par John Tomkinson, 14/12/2016

Nom de variable / Variable name

(i)               agedad_birthdec_yymm

(ii)             agedad_birthdec

Description

Age of father at birth of child.

(i)              Age exact

(ii)             Age in completed years

Fichiers concernés / datafiles used

EDP La table Descendance : EDP_BEnnnn_descendance

Valeurs de la variable / Variable values

Numeric

Variables utilisées en entrée / Required input variables

ENF_IND_NAI_DATE, PERE_IND_NAI_DATE

Programme SAS OU Stata / Stata-code OR SAS-code

/*** Date of birth of the child of the individual EDP ***/

/** Remove incomplete / absent birthdates of child **/

/* Year of birth incomplete/absent/incorrect */

If substr(ENF_IND_NAI_DATE,1,4) in ("","--  ","0000") then delete ;

/* Month of birth incomplete/absent/incorrect */

If substr(ENF_IND_NAI_DATE,5,2) in ("- ","","00","99") then delete ;

/* Day of birth incomplete/absent/incorrect */

If substr(ENF_IND_NAI_DATE,7,2) in ("- ","","00","99") then delete ;

 

enfdob_char = cats(substr(ENF_IND_NAI_DATE,1,4),substr(ENF_IND_NAI_DATE,6,2),substr(ENF_IND_NAI_DATE,9,2)) ;

enfdob2 = input(enfdob_char, 8.) ;

/* Correct false birth dates e.g. Feb 29th in non leap year */

if enfdob2 = 19770229 then enfdob2 = 19770228 ;

/* Put into SAS date format */

enfdob = input(put(enfdob2,8.), yymmdd8.) ;

 

/*** Date of birth of mother of child ***/ ;

/** Remove incomplete / absent birthdates of child **/

/* Year of birth incomplete/absent/incorrect */

If substr(PERE_IND_NAI_DATE,1,4) in ("","--  ","0000") then delete ;

/* Month of birth incomplete/absent/incorrect */

If substr(PERE_IND_NAI_DATE,5,2) in ("- ","","00","99") then delete ;

/* Day of birth incomplete/absent/incorrect */

If substr(PERE_IND_NAI_DATE,7,2) in ("- ","","00","99") then delete ;

 

daddob_char = cats(substr(PERE_IND_NAI_DATE,1,4),substr(PERE_IND_NAI_DATE,6,2),substr(PERE_IND_NAI_DATE,9,2)) ;

daddob2 = input(daddob_char, 8.) ;

daddob_bulnais = input(put(daddob2,8.), yymmdd8.) ;

/*** Calculate declared age of father at birth ***/ ;

/* Exact age */

agedad_birthdec_yymm = intck('MONTHS', daddob_bulnais, enfdob, 'C') / 12 ;

/* Age in completed years */

agedad_birthdec = floor(agedad_birthdec_yymm) ;

 

Commentaire / Any other comment

Users should run frequency tables of input variables in order to identify incomplete and/or erroneous values.

Age of mother at birth of child

Variable créée par John Tomkinson, 14/12/2016

Nom de variable / Variable name

(i)               age_birthdec_yymm

(ii)             age_birthdec

Description

Age of mother at birth of child.

(i)               Age exact

(ii)             Age in completed years

Fichiers concernés / datafiles used

EDP La table Descendance : EDP_BEnnnn_descendance

Valeurs de la variable / Variable values

Numeric

Variables utilisées en entrée / Required input variables

ENF_IND_NAI_DATE, MERE_IND_NAI_DATE

Programme SAS OU Stata / Stata-code OR SAS-code

/*** Date of birth of the child of the individual EDP ***/

/** Remove incomplete / absent birthdates of child **/

/* Year of birth incomplete/absent/incorrect */

If substr(ENF_IND_NAI_DATE,1,4) in ("","--  ","0000") then delete ;

/* Month of birth incomplete/absent/incorrect */

If substr(ENF_IND_NAI_DATE,5,2) in ("- ","","00","99") then delete ;

/* Day of birth incomplete/absent/incorrect */

If substr(ENF_IND_NAI_DATE,7,2) in ("- ","","00","99") then delete ;

 

enfdob_char = cats(substr(ENF_IND_NAI_DATE,1,4),substr(ENF_IND_NAI_DATE,6,2),substr(ENF_IND_NAI_DATE,9,2)) ;

enfdob2 = input(enfdob_char, 8.) ;

/* Correct false birth dates e.g. Feb 29th in non leap year */

if enfdob2 = 19770229 then enfdob2 = 19770228 ;

/* Put into SAS date format */

enfdob = input(put(enfdob2,8.), yymmdd8.) ;

 

/*** Date of birth of mother of child ***/ ;

/** Remove incomplete / absent birthdates of child **/

/* Year of birth incomplete/absent/incorrect */

If substr(MERE_IND_NAI_DATE,1,4) in ("","--  ","0000") then delete ;

/* Month of birth incomplete/absent/incorrect */

If substr(MERE_IND_NAI_DATE,5,2) in ("- ","","00","99") then delete ;

/* Day of birth incomplete/absent/incorrect */

If substr(MERE_IND_NAI_DATE,7,2) in ("- ","","00","99") then delete ;

 

mumdob_char = cats(substr(MERE_IND_NAI_DATE,1,4),substr(MERE_IND_NAI_DATE,6,2),substr(MERE_IND_NAI_DATE,9,2)) ;

mumdob2 = input(mumdob_char, 8.) ;

mumdob_bulnais = input(put(mumdob2,8.), yymmdd8.) ;

/*** Calculate declared age of mum at birth ***/ ;

/* Exact age */

age_birthdec_yymm = intck('MONTHS', mumdob_bulnais, enfdob, 'C') / 12 ;

/* Age in completed years */

age_birthdec = floor(age_birthdec_yymm) ;

 

 

Commentaire / Any other comment

Users should run frequency tables of input variables in order to identify incomplete and/or erroneous values.

Age gap between parents at birth of child

Variable créée par John Tomkinson, 14/12/2016

Nom de variable / Variable name

agegap

Description

Exact years between age of parents at birth of child

Fichiers concernés / datafiles used

EDP La table Descendance : EDP_BEnnnn_descendance

Valeurs de la variable / Variable values

Numeric value

Variables utilisées en entrée / Required input variables

constructed variables : agedad_birthdec_yymm, age_birthdec_yymm

Programme SAS OU Stata / Stata-code OR SAS-code

agegap = agedad_birthdec_yymm - age_birthdec_yymm ;

 

 

Commentaire / Any other comment

Users should run frequency tables of input variables in order to identify incomplete and/or erroneous values.

Age at first child

Variable créée par Marie-Caroline Compans, 02/03/2018 / Variable created by Marie-Caroline Compans, 02/03/2018

Nom de variable / Variable name

(i)    AGE_1ERNAIS

Description

Âge au premier enfant calculé à partir de la date de naissance du parent EDP dans la table “Individu” / Age at first birth using the parent’s date of birth registered in the ‘Individu’ data set 

Le code comprend aussi le programme permettant l’appariement entre les informations des parents EDP contenues dans la table “Individu” et les informations des bulletins d’état civil de leur premier enfant issues de la table “Descendance”

/ The following Sas code also includes a program to merge information on parents from the ‘Individu’ data set, and information from birth records for their first child (‘Descendance’ data set).    

Fichiers concernés / datafiles used

Table Descendance : EDP_BEnnnn_DESCENDANCE

Table Individu : EDP_BEnnnn_INDIVIDU

Valeurs de la variable / Variable values

Numérique / Numeric

Variables utilisées en entrée / Required input variables

Descendance  : ENF_IND_NAI_DATE

Individu : NAI_DATE

Programme SAS / SAS-code

* Librairie ;

Libname source "\\casd.fr\casdfs\Projets\XXXXXX\Data\EDP_EDP_2015";

 

/* DUPLICATION DES BASES */

* DESCENDANCE *;

Data DESCENDANCE; Set source.EDP_BE2015_DESCENDANCE;

                  Keep ID_DIFF ENF_IND_NAI_DATE;

* PARENTS EDP *

* On ne garde que les Individus EDP ayant au moins un enfant / Only individuals who had at least one child ;

Data PARENTS; Set source.EDP_BE2015_INDIVIDU;

       Keep ID_DIFF NAI_DATE SEXE NBENF;

       IF NBENF>0;

 

/* RECODAGES DES DATES DE NAISSANCE POUR LES CONVERTIR AU FORMAT DATE */

/* RECODING OF DATES OF BIRTH TO CONVERT TO DATES */

 

* DESCENDANCE;

* Conversion de l’année, du mois et du jour de naissance au format numérique, puis de la date de naissance au format date 

/ Year, month and day of the birth of the child converted to numeric, before putting date of birth into SAS date format ;

 

Data DESCENDANCE; Set DESCENDANCE;

* Année de naissance de l'enfant / Year of birth of the child;      ANNEE_NAI_E=substr(Enf_Ind_Nai_date,1,4);

* au format numérique / numeric format;

      ANNEE_NAI_ENF = input(ANNEE_NAI_E,4.);

* Mois de naissance de l'enfant / Month of birth of the child;     

      MOIS_NAI_ENF=substr(Enf_Ind_Nai_date,6,2);

* au format numérique / numeric format;

      MOIS_ENF = input(MOIS_NAI_ENF,2.);

* Jour de naissance de l'enfant / Day of birth of the child;              

      JRS_NAI_ENF=substr(Enf_Ind_Nai_date,9,2); 

* au format numérique / numeric format;

      JRS_ENF = input(JRS_NAI_ENF,2.);                    

 

* Conversion de la date de naissance au format date / Converting as a date;

      DATE_NAI_ENF=MDY(MOIS_ENF,JRS_ENF,ANNEE_NAI_ENF);   

      Format DATE_NAI_ENF date9.;

 

* PARENTS;

      * Idem que précédemment pour la date de naissance des parents EDP

/ Same as previous with the parent’s date of birth;

Data PARENTS; set PARENTS;

      ANNEE_NAI_IND = substr(NAI_DATE,1,4); 

            ANNEE_NAI = input(ANNEE_NAI_IND,4.);     * au format numérique;

      JRS_NAI_IND = substr(NAI_DATE,9,2);      * Jour de naissance;

            JRS_NAI = input(JRS_NAI_IND,2.);         * au format numérique;

      MOIS_NAI_IND=substr(NAI_DATE,6,2);       * Mois de naissance;

            MOIS_NAI=input(MOIS_NAI_IND,2.);         * au format numérique;

 

* Convertir au format date;

      DATE_NAI_IND=MDY(MOIS_NAI,JRS_NAI,ANNEE_NAI);

      Format DATE_NAI_IND date9.;

 

/* CREATION DE TABLES / CREATING TABLES */

 

* Sélection des premières naissances dans Descendance / Selection of first births in Descendance;

   * NB : on ne dispose pas directement de variable de bonne qualité dans l’EDP pour calculer le rang de naissance. Il faut donc trier les bulletins par l’identifiant du parent EDP et par année de naissance des enfants EDP / variables to directly obtain a child’s birth order are not directly available. Therefore, we have to sort birth records by identifier and by child’s year of birth ; 

Proc sort data=DESCENDANCE; by ID_DIFF ANNEE_NAI_ENF; 

 

   * Retenue des premiers bulletins / First births;

Data FIRST; set DESCENDANCE; By ID_DIFF; If FIRST.ID_DIFF;

 

   * Fusion de First avec la table individu pour calculer l’âge au premier enfant / Merge of Parents and First to compute age at first birth;

   * Tri par l'identifiant EDP / Data sets are sorted by the EDP identifier;

Proc sort data=FIRST; by ID_DIFF ; Proc sort data=PARENTS; by ID_DIFF;

   * Fusion des tables / Merging;

Data FIRST_EDP;

MERGE PARENTS (in=a)

FIRST; BY ID_DIFF;

IF a=1;

 

/* CALCUL DE L’ÂGE AU PREMIER ENFANT / COMPUTATION OF AGE AT FIRST BIRTH */

 

Data FIRST; Set FIRST;

IF MOIS_NAI=MOIS_ENF & JRS_NAI=JRS_ENF then AGE_1ERNAIS=ANNEE_NAI_ENF-ANNEE_NAI;

ELSE AGE_1ERNAIS=ROUND(YRDIF(DATE_NAI_IND,DATE_NAI_ENF,'ACTUAL'),1.0);

 

* Suppression des âges incohérents liés à l’absence, l’enregistrement erronée ou incomplet des dates de naissance des enfants et/ou des parents / Remove inconsistent age of birth due to incomplete, absent or incorrect dates of birth of children and/or parents;

* Par exemple des âges inférieurs à 13 ans ou supérieurs à 90 ans / For instance age below 13 or above 90 ;

IF (AGE_1ERNAIS < 13) | (AGE_1ERNAIS > 90) THEN AGE_1ERNAIS=.;

 

/* L’âge à la maternité et l’âge à la paternité peuvent être distingués en utilisant la variable ‘SEXE’ /

The age of transition to motherhood or to fatherhood can be distinguished using the variable ‘SEXE’ */

 

RUN;

 

Commentaire / Any other comment

Les bulletins d’état civil renseignent sur la date de naissance des parents EDP, mais ces informations sont de moins bonne qualité que dans la table Individu.

Birth records include EDP parents’ date of birth, but that information are of lesser quality than in the Individu dataset.

Percentage of household income receipts from social benefits

Variable créée par John Tomkinson, 23/02/2017

Nom de variable / Variable name

PCT_PREST

Description

Pourcentage de revenus monétaires disponibles du ménage provenant de prestations sociales.

Fichiers concernés / datafiles used

edp.EDP_BE2014_FISC_REVENU

Valeurs de la variable / Variable values

0-100

Variables utilisées en entrée / Required input variables

PSOCM, REVDISPM

Programme SAS OU Stata / Stata-code OR SAS-code

PCT_PREST = 100 * PSOCM / REVDISPM ;

Tax data export program from SAS to STATA by fiscal year

Programme créé par Giulia Ferrari, 21 nov 2017

Program created by Giulia Ferrari, 21 nov 2017

Description

Le fichier incluant les données fiscales est disponible dans l’espace SOURCES en version SAS et il est très lourd à traiter parce qu’il contient toutes les années fiscales empilées. Ainsi, on pourrait être intéressé à étudier une année fiscale précise. Ce petit programme extrait une partie du fichier global avec une seule année et la convertit dans un fichier STATA.

The file containing tax data in the “SOURCES” space is a SAS file with all available fiscal years one after the other. It is thus quite heavy to be treated, especially if one is interested in one particular year only. This short program extracts a file for each fiscal year separately and converts it into a STATA file.    

Fichiers concernés / datafiles used

edp_be2015_fisc_individu

Programme SAS / SAS-code

/*on charge la base dans la librairie ; we load the dataset on the working library*/

 

libname EDP “S:\EDP\EDP 2015”;

data fisc_tout; set EDP. edp_be2015_fisc_individu;

run;

 

/*on construit une base avec 2011 seulement et on la transforme dans un fichier STATA ; we create a database with 2011 only and we transform it into a STATA file*/

data fisc2011 ; set fisc_tout;

if an_fisc^=2011 then delete;

run;

proc export data= "P:\mon_dossier\nom_du_fichier_2011.dta”;

run;

 

/*on répète pour toutes les années fiscales : on construit une base avec 2012 seulement et on la transforme dans un fichier STATA ; we create a database with 2012 only and we transform it into a STATA file*/

data fisc2012 ; set fisc_tout;

if an_fisc^=2012 then delete;

run;

proc export data= "P:\mon_dossier\nom_du_fichier_2012.dta”;

run;

/*on construit une base avec 2013 seulement et on la transforme dans un fichier STATA ; we create a database with 2013 only and we transform it into a STATA file*/

data fisc2013 ; set fisc_tout;

if an_fisc^=2013 then delete;

run;

proc export data= "P:\mon_dossier\nom_du_fichier_2013.dta”;

run;

 

/*on construit une base avec 2014 seulement et on la transforme dans un fichier STATA ; we create a database with 2014 only and we transform it into a STATA file*/

data fisc2014 ; set fisc_tout;

if an_fisc^=2014 then delete;

run;

proc export data= "P:\mon_dossier\nom_du_fichier_2014.dta”;

run;

 

/*on construit une base avec 2015 seulement et on la transforme dans un fichier STATA ; we create a database with 2015 only and we transform it into a STATA file*/

data fisc2015 ; set fisc_tout;

if an_fisc^=2015 then delete;

run;

proc export data= "P:\mon_dossier\nom_du_fichier_2015.dta”;

run;

 

Export SAS to CSV (or dta)

Variable created by Adrien Pacifico, 17/12/2017

Description

CSV est un format ouvert permettant d’être utilisé par tous les logiciels de traitement de données (e.g R, Python, Stata). La macro SAS suivante permet d’exporter tout les fichiers d’un dossier en format CSV.


CSV is an open format that can be read by any data software (e.g R, Python, Stata). The following SAS macro allows to export all files in a folder to CSV format.

Fichiers concernés / datafiles used

All Files

Programme SAS OU Stata / Stata-code OR SAS-code

 

Libname EDP "S:\EDP\EDP 2015";

 

%MACRO Convert2CSV(Libname);

    DATA MEMBERS;

    SET SASHELP.VMEMBER(WHERE= (LIBNAME = "&Libname"));

    RETAIN OBS 0;

    OBS = OBS+1;

    KEEP MEMNAME OBS;

    RUN;

    PROC SQL;

    SELECT MIN(OBS) INTO :MIN

    FROM MEMBERS;

    QUIT;

    %LOCAL D;

     %DO D = &MIN %TO &MAX;

      PROC SQL;

      SELECT COMPRESS(MEMNAME) INTO: Table

       FROM MEMBERS

       WHERE OBS=&D;

    QUIT;

    PROC EXPORT DBMS=CSV DATA=&Libname..&Table /* Replace CSV by DTA for stata export */

    /* You need to create P:\mon_dossier */

    OUTFILE="P:\mon_dossier\&Table..CSV";  /* Replace CSV by .dta for stata export */

    RUN;

   %END;

%MEND;

%Convert2CSV(EDP)

 

Commentaire / Any other comment

Vous devez préalablement à l’exécution de cette macro créer le fichier "P:\mon_dossier" (avec l’explorateur windows ou en tappant >>>mkdir P:\mon_dossier dans l’invité de commande windows. )

Lire les commentaires du code pour un export vers du Stata.