Le script commence par définir deux jeux de données temporaires, 'company' et 'finance', en utilisant des blocs 'datalines' pour l'entrée directe des données. Le jeu de données 'company' contient des informations démographiques sur les employés (Nom, Âge, Sexe), tandis que 'finance' contient des détails financiers (Numéro de téléphone, Nom, Salaire). Chaque jeu de données est trié par 'Name' à l'aide de PROC SORT, ce qui est une étape préparatoire essentielle pour la fusion. Les jeux de données triés sont ensuite imprimés. Le script fusionne ensuite 'company' et 'finance' en un nouveau jeu de données 'employeeinfo' basé sur la variable commune 'Name'. Des procédures PROC PRINT supplémentaires sont utilisées pour afficher le jeu de données fusionné, ainsi que pour démontrer l'utilisation des options globales 'firstobs' et 'obs', la clause 'WHERE' pour le filtrage, et une tentative de calcul de somme pour une variable catégorielle (qui est notée comme une potentielle erreur). Enfin, des PROC CONTENTS et PROC DATASETS sont utilisées pour examiner les métadonnées des jeux de données, notamment 'company'.
Analyse des données
Type : CREATION_INTERNE
Les données pour les jeux de données 'company' et 'finance' sont créées directement dans le script SAS via des blocs 'datalines'. Aucune donnée externe ou des bibliothèques SASHELP n'est utilisée comme source primaire de données pour ces jeux de données.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée le jeu de données 'company' en utilisant des données en ligne fournies dans le bloc 'datalines'. Il définit les variables 'Name' (caractère), 'Age' (numérique) et 'Gender' (caractère) avec leurs positions de colonne respectives. Ce jeu de données contient des informations de base sur les employés.
Copié !
data company;
input
Name $ 1-25
Age 27-28
Gender $ 30;
datalines;
Vincent, Martina 34 F
Phillipon, Marie-Odile 28 F
Gunter, Thomas 27 M
Harbinger, Nicholas 36 M
Benito, Gisela 32 F
Rudelich, Herbert 39 M
Sirignano, Emily 12 F
Morrison, Michael 32 M
;
1
DATA company;
2
INPUT
3
Name $ 1-25
4
Age 27-28
5
Gender $ 30;
6
DATALINES;
7
Vincent, Martina 34 F
8
Phillipon, Marie-Odile 28 F
9
Gunter, Thomas 27 M
10
Harbinger, Nicholas 36 M
11
Benito, Gisela 32 F
12
Rudelich, Herbert 39 M
13
Sirignano, Emily 12 F
14
Morrison, Michael 32 M
15
;
16
2 Bloc de code
PROC SORT
Explication : Cette PROC SORT trie le jeu de données 'company' par la variable 'Name'. Le tri est essentiel pour des opérations ultérieures comme la fusion ('MERGE') qui nécessitent généralement que les jeux de données d'entrée soient triés par les variables de fusion ('BY' variables).
Copié !
proc sort data=company;
by Name;
run;
1
PROC SORTDATA=company;
2
BY Name;
3
RUN;
4
3 Bloc de code
PROC PRINT
Explication : Cette PROC PRINT affiche le contenu du jeu de données 'company' dans la fenêtre de sortie. Le 'title' spécifie le titre du rapport imprimé, le rendant plus descriptif.
Copié !
proc print data=company;
title 'Company';
run;
1
PROC PRINTDATA=company;
2
title 'Company';
3
RUN;
4
4 Bloc de code
DATA STEP Data
Explication : Ce second bloc DATA STEP crée le jeu de données 'finance', similaire au bloc 'company', en utilisant des 'datalines'. Il capture les variables 'Phone_number' (caractère), 'Name' (caractère) et 'Salary' (numérique), contenant des informations financières pour certains employés.
Copié !
data finance;
input Phone_number $ 1-11
Name $ 13-40
Salary;
datalines;
074-53-9892 Vincent, Martina 35000
776-84-5391 Phillipon, Marie-Odile 29750
929-75-0218 Gunter, Thomas 27500
446-93-2122 Harbinger, Nicholas 33900
228-88-9649 Benito, Gisela 28000
029-46-9261 Rudelich, Herbert 35000
442-21-8075 Sirignano, Emily 5000
;
1
DATA finance;
2
INPUT Phone_number $ 1-11
3
Name $ 13-40
4
Salary;
5
DATALINES;
6
074-53-9892 Vincent, Martina 35000
7
776-84-5391 Phillipon, Marie-Odile 29750
8
929-75-0218 Gunter, Thomas 27500
9
446-93-2122 Harbinger, Nicholas 33900
10
228-88-9649 Benito, Gisela 28000
11
029-46-9261 Rudelich, Herbert 35000
12
442-21-8075 Sirignano, Emily 5000
13
;
14
5 Bloc de code
PROC SORT
Explication : Similaire au tri du jeu de données 'company', cette PROC SORT trie le jeu de données 'finance' par la variable 'Name' en préparation de l'opération de fusion.
Copié !
proc sort data=finance;
by Name;
run;
1
PROC SORTDATA=finance;
2
BY Name;
3
RUN;
4
6 Bloc de code
PROC PRINT
Explication : Cette PROC PRINT affiche le contenu du jeu de données 'finance' avec le titre 'Employee Information', fournissant une vue des données financières individuelles.
Copié !
proc print data=finance;
title 'Employee Information';
run;
1
PROC PRINTDATA=finance;
2
title 'Employee Information';
3
RUN;
4
7 Bloc de code
DATA STEP Data
Explication : Ce DATA STEP fusionne les jeux de données 'company' et 'finance' en un nouveau jeu de données appelé 'employeeinfo'. La clause 'BY name;' indique que la fusion doit être effectuée en faisant correspondre les observations sur la base de la variable 'Name'. Si un nom apparaît dans un jeu de données mais pas dans l'autre, les valeurs des variables non correspondantes seront manquantes. Les jeux de données d'entrée doivent être triés par la variable 'BY'.
Copié !
data employeeinfo;
merge company finance;
by name;
run;
1
DATA employeeinfo;
2
MERGE company finance;
3
BY name;
4
RUN;
5
8 Bloc de code
PROC PRINT
Explication : Cette PROC PRINT affiche le jeu de données 'employeeinfo' qui est le résultat de la fusion. L'utilisation de 'title' et 'title2' permet de définir deux lignes de titre pour la sortie du rapport.
Copié !
proc print data=employeeinfo;
title 'Laxmi is Cute!';
title2 'very cute';
run;
1
PROC PRINTDATA=employeeinfo;
2
title 'Laxmi is Cute!';
3
title2 'very cute';
4
RUN;
5
9 Bloc de code
PROC CONTENTS
Explication : La PROC CONTENTS fournit des métadonnées détaillées sur le jeu de données 'company'. Cela inclut des informations telles que le nombre d'observations, le nombre de variables, les noms des variables, leurs types (numérique ou caractère), leurs longueurs et leurs formats.
Copié !
proc contents data = company;
run;
1
PROC CONTENTSDATA = company;
2
RUN;
3
10 Bloc de code
PROC DATASETS
Explication : La PROC DATASETS est une procédure de gestion de bibliothèque qui permet diverses opérations sur les jeux de données et les catalogues. Ici, l'instruction 'contents data= company;' est utilisée pour obtenir les mêmes métadonnées que PROC CONTENTS pour le jeu de données 'company'. Elle est souvent utilisée dans un contexte où plusieurs opérations de gestion de jeux de données sont effectuées au sein d'une seule exécution de PROC DATASETS.
Copié !
proc datasets;
contents data= company;
run;
1
PROC DATASETS;
2
contents DATA= company;
3
RUN;
4
11 Bloc de code
OPTIONS et PROC PRINT
Explication : Ce bloc démontre l'utilisation des options globales 'firstobs' et 'obs'. 'options firstobs=3;' indique à SAS de commencer à lire les données à partir de la troisième observation, et 'obs=9;' indique de s'arrêter après la neuvième observation. Par conséquent, cette PROC PRINT affichera les observations 3 à 9 (incluses) du jeu de données 'employeeinfo'. Ces options affectent toutes les étapes de données et procédures suivantes jusqu'à ce qu'elles soient réinitialisées ou modifiées.
Copié !
options firstobs= 3 obs=9;
proc print data = employeeinfo;
run;
1
options firstobs= 3 obs=9;
2
PROC PRINTDATA = employeeinfo;
3
RUN;
4
12 Bloc de code
PROC PRINT
Explication : Cette PROC PRINT utilise une clause 'WHERE' pour filtrer les observations du jeu de données 'employeeinfo'. Seules les observations où la variable 'Name' contient la sous-chaîne 'Vi' (insensible à la casse par défaut en SAS pour 'contains' sauf si l'option est changée) seront affichées. Cela permet de cibler des subsets de données spécifiques pour l'affichage.
Copié !
proc print data = employeeinfo;
where Name contains 'Vi';
run;
1
PROC PRINTDATA = employeeinfo;
2
where Name contains 'Vi';
3
RUN;
4
13 Bloc de code
PROC PRINT
Explication : Cette PROC PRINT tente de générer un rapport avec des sous-totaux. L'instruction 'by Name;' regroupe les observations par nom, et 'sum Gender;' est destiné à calculer des totaux pour la variable 'Gender'. Cependant, 'Gender' est une variable de type caractère, et l'instruction 'SUM' dans PROC PRINT est conçue pour des variables numériques. Cela entraînera un avertissement ou une erreur dans le log SAS et la somme pour 'Gender' ne sera pas affichée. L'instruction 'ID Gender;' signifie que la variable 'Gender' sera utilisée comme variable d'identification dans le rapport, mais n'est pas typiquement utilisée dans ce contexte pour un groupement significatif avec 'BY' et 'SUM' sur une variable catégorielle.
Copié !
proc print data = employeeinfo;
title 'Sub total';
sum Gender;
by Name;
ID Gender;
run;
1
PROC PRINTDATA = employeeinfo;
2
title 'Sub total';
3
sum Gender;
4
BY Name;
5
ID Gender;
6
RUN;
7
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.