Le script commence par créer deux jeux de données temporaires, 'empsau' (employés) et 'phonec' (téléphones), via des blocs DATA STEP utilisant des DATALINES. Ensuite, plusieurs blocs DATA STEP sont exécutés pour démontrer des scénarios de fusion : une fusion complète (équivalent à un full outer join), une fusion pour conserver uniquement les enregistrements correspondants (équivalent à un inner join), et enfin des fusions pour isoler les enregistrements présents uniquement dans le premier jeu de données, uniquement dans le second, ou dans aucun des deux. Chaque opération de fusion est suivie d'une PROC PRINT pour afficher le résultat.
Analyse des données
Type : CREATION_INTERNE
Les données 'empsau' et 'phonec' sont créées directement dans le script via des blocs DATA STEP et l'instruction DATALINES. Elles sont ensuite utilisées et transformées au sein du même script.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée le jeu de données temporaire 'empsau' contenant des informations sur les employés (Prénom, Sexe, ID Employé). Les données sont fournies directement dans le script via l'instruction DATALINES.
Copié !
data empsau;
input First $ Gender $ EmpID;
datalines;
Togar M 121150
Kylie F 121151
Birin M 121152
;
1
DATA empsau;
2
INPUT First $ Gender $ EmpID;
3
DATALINES;
4
Togar M 121150
5
Kylie F 121151
6
Birin M 121152
7
;
2 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée le jeu de données temporaire 'phonec' contenant les numéros de téléphone associés à des ID Employé. Les données sont également intégrées directement dans le script via DATALINES.
Explication : Ce bloc DATA STEP effectue une fusion complète (full outer join) des jeux de données 'empsau' et 'phonec' basée sur la variable commune 'EmpID'. Les options IN= (Emps, Cell) créent des variables booléennes temporaires (_Emps et _Cell) qui indiquent si un enregistrement provient de 'empsau' ou 'phonec' respectivement. La PROC PRINT affiche tous les enregistrements fusionnés, incluant ceux présents dans un seul des deux jeux de données.
Copié !
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
RUN;
6
7
PROC PRINTDATA=empsauc;
8
RUN;
4 Bloc de code
DATA STEP
Explication : Ce bloc DATA STEP réalise une jointure interne (inner join). Après la fusion, la condition 'if Emps=1 and Cell=1;' filtre les enregistrements pour ne conserver que ceux dont l'ID Employé est présent à la fois dans 'empsau' et dans 'phonec'. La PROC PRINT affiche uniquement les correspondances.
Copié !
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=1 and Cell=1;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=1 and Cell=1;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
5 Bloc de code
DATA STEP
Explication : Ce bloc DATA STEP identifie les enregistrements qui sont présents dans 'empsau' (Emps=1) mais absents de 'phonec' (Cell=0). Cela correspond à une jointure gauche anti-join. La PROC PRINT affiche les employés sans correspondance téléphonique dans 'phonec'.
Copié !
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=1 and Cell=0;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=1 and Cell=0;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
6 Bloc de code
DATA STEP
Explication : Ce bloc DATA STEP identifie les enregistrements qui sont présents dans 'phonec' (Cell=1) mais absents de 'empsau' (Emps=0). Cela correspond à une jointure droite anti-join. La PROC PRINT affiche les numéros de téléphone sans correspondance d'employé dans 'empsau'.
Copié !
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=0 and Cell=1;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=0 and Cell=1;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
7 Bloc de code
DATA STEP
Explication : Ce bloc DATA STEP sélectionne tous les enregistrements qui ne correspondent pas. La condition 'if Emps=0 or Cell=0;' filtre les enregistrements qui sont présents uniquement dans 'empsau' ou uniquement dans 'phonec'. La PROC PRINT affiche les enregistrements qui ne trouvent pas de correspondance dans l'autre jeu de données.
Copié !
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=0 or Cell=0;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=0 or Cell=0;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.