libname z ""; run; /**** Exemple: On veut connaître le nombre d’enquêté(e)s en couple cohabitant qui travaillent tous les deux et vivent avec au moins un enfant de moins de 5 ans qui est cohabitant et vit aussi une partie du temps dans un autre logement.********/ /*On apparie EFL_INDIVIDU et EAR_INDIVIDU pour avoir les données des BI des enquêtés*/ /*on ne garde que les variables qui nous interesse pour ne pas trop alourdir la base*/ data EAR_INDIVIDU; set z.EAR_INDIVIDU; keep cabbia situat_r; run; proc sort data=z.EFL_INDIVIDU; by cabbia; run; proc sort data=EAR_INDIVIDU; by cabbia; run; data appareflbi; merge z.EFL_INDIVIDU EAR_INDIVIDU; by cabbia; run; /*on supprime les BI qui ne correspondent pas à des enquêtés EFL (les autres BI du logement)*/ data appareflbi; set appareflbi; if cabefla in (.) then delete; run; /*on crée une base apparcjt pour faire l'appariement des BI des conjoints: on repère les enquêtés ayant un conjoint cohabitant qui ont remplis un BI avec l'identifiant CABBI_CA*/ data apparcjt; set appareflbi; where cabbi_ca not in (.);/*quand il y a un cabbi_c c'est qu'on a retrouvé le BI du conjoint de l'enquêté EFL dans l'EAR*/ run; /*La base nonapparcjt concerne les enquêtés qui n'ont pas de conjoint ou qui ont un conjoint qui ne vit pas dans le logement*/ data nonapparcjt; set appareflbi; where cabbi_ca in (.); run; /*On renomme les variables du BI dont on a besoin avec le suffixe "_cjt" pour ne pas écraser les variables qui concerne l'enquêté et on ne garde que les variables qui nous interesse*/ data EAR_INDIVIDUcjt; set z.EAR_INDIVIDU; SITUAT_r_cjt=SITUAT_r; cabbi_ca=cabbia; keep SITUAT_r_cjt cabbi_ca ; run; /*on trie la base par l'identifiant BI du conjoint*/ proc sort data=apparcjt; by cabbi_ca; run; /*on trie la base puis on l'apparie à la base construite au dessus*/ proc sort data=EAR_INDIVIDUcjt; by cabbi_ca; run; data appareflbicjt; merge EAR_INDIVIDUcjt apparcjt; by cabbi_ca; run; /*on supprime les BI sans répondant efl (les autres BI du logement)*/ data appareflbicjt; set appareflbicjt; if cabefla in (.) then delete; run; /*on recolle les bulletins enquêtés efl sans appariement conjoint*/ data appareflbicjtens; set appareflbicjt nonapparcjt; run; /*Puis on travaille sur la base enfant*/ /*on compte par répondant EFL, le nombre d'enfant(s) de moins de 5 ans qui vivent aussi ailleurs que dans le logement puis on retient ce compteur dans une base avec une ligne par répondant EFL*/ proc sort data=z.EFL_ENFANT; by cabefla; run; data enfmultires; set z.EFL_ENFANT; by cabefla;/*on travaille par identifiant enquêté*/ retain enfmultires; enfmultires=0; if e13_14anai>=2006 and e13aut_lgt="1" then do; enfmultires=enfmultires+1; end; if last.cabefla then output; keep cabefla enfmultires; run; /*On ajoute ensuite cette variable à la base complète "appareflbicjtens" avec l'identifiant enquêté: CABEFLA*/ proc sort data=appareflbicjtens; by cabefla; run; proc sort data=enfmultires; by cabefla; run; data appareflbicjtensb; merge appareflbicjtens enfmultires; by cabefla; run; /*Puis on peut répondre à notre question en créant une variable indicatrice (ici reponse1)*/ data appareflbicjtensb; set appareflbicjtensb; if situat_r="1" and situat_r_cjt="1" and enfmultires>=1 then reponse1=1; else reponse1=2; run; /*proc freq data=appareflbicjtensb; tables reponse1; run;*/ /*avec la pondération individus*/ /*proc freq data=appareflbicjtensb; tables reponse1; weight poids_ind; run;*/ /*On veut savoir dans quel "type" de commune vivent ces enquetés (moins de 10000 hab ou 10000 et plus)*/ /*on apparie donc cette base à la base EAR_LOGEMENT*/ data ear_logement; set z.ear_logement; keep cabfla tc; run; proc sort data=appareflbicjtensb; by cabfla; run; proc sort data=EAR.LOGEMENT; by cabfla; run; data appareflbicjtensc; merge appareflbicjtensb EAR_LOGEMENT; by cabfla; run; /*puis on regarde la répartition par la taille de la commune*/ /*proc freq data=appareflbicjtensc; table tc; where reponse1=1; run;*/ /*avec la pondération individus*/ /*proc freq data=appareflbicjtensc; table tc; where reponse1=1; weight poids_ind; run;*/