Publié le :
ETL MIXTE

Manipulation et Analyse de Données avec Procs SAS de Base

En attente de validation
Le script commence par créer une copie locale de la table SASHELP.CARS. Ensuite, il explore différentes facettes de la manipulation de données : tri avec PROC SORT et gestion des doublons (NODUPKEY, NOUNIQUEKEY, NODUP) ; analyse de fréquence avec PROC FREQ pour des tables simples et croisées ; calcul de statistiques de base avec PROC UNIVARIATE ; restructuration de table (format long à large) avec PROC TRANSPOSE ; et enfin, différentes méthodes d'échantillonnage (simple aléatoire, stratifié) avec PROC SURVEYSELECT.
Analyse des données

Type : MIXTE


La table SASHELP.CARS est la source initiale. Toutes les autres tables (CARS, CARS_MSRP, CARS_DUP, etc.) sont créées en interne dans la librairie WORK comme des dérivés de cette table source.

1 Bloc de code
DATA STEP Data
Explication :
Active la compression des jeux de données SAS. Copie l'intégralité de la table SASHELP.CARS dans une nouvelle table nommée CARS dans la librairie WORK.
Copié !
1OPTIONS COMPRESS = YES;
2 
3DATA CARS;
4SET SASHELP.CARS;
5RUN;
2 Bloc de code
PROC SORT
Explication :
Trie la table SASHELP.CARS en mémoire selon la variable MSRP (Manufacturer's Suggested Retail Price) par ordre croissant. Le résultat n'est pas sauvegardé dans une table de sortie.
Copié !
1/* PROC SORT */
2PROC SORT DATA = SASHELP.CARS;
3BY MSRP;
4RUN;
3 Bloc de code
PROC SORT Data
Explication :
Deux procédures de tri distinctes. La première trie SASHELP.CARS par MSRP en ordre décroissant et sauvegarde le résultat dans CARS_MSRP. La seconde trie par MAKE (constructeur) en ordre croissant et sauvegarde le résultat dans CARS_MAKE.
Copié !
1PROC SORT DATA = SASHELP.CARS OUT = CARS_MSRP;
2BY DESCENDING MSRP;
3RUN;
4 
5PROC SORT DATA = SASHELP.CARS OUT = CARS_MAKE;
6BY MAKE;
7RUN;
4 Bloc de code
DATA STEP Data
Explication :
Crée une table CARS_DUP contenant uniquement les colonnes TYPE, ORIGIN, et DRIVETRAIN à partir de SASHELP.CARS. Affiche ensuite les 20 premières observations de cette nouvelle table.
Copié !
1DATA CARS_DUP;
2KEEP TYPE ORIGIN DRIVETRAIN;
3SET SASHELP.CARS;
4RUN;
5 
6PROC PRINT DATA = CARS_DUP(OBS=20);
7RUN;
5 Bloc de code
PROC SORT Data
Explication :
Trie les 20 premières observations de CARS_DUP par TYPE et ORIGIN. L'option NODUPKEY supprime les observations ayant des valeurs identiques pour les variables spécifiées dans l'instruction BY. Le résultat est stocké dans CARS_NDK et ensuite affiché.
Copié !
1PROC SORT DATA = CARS_DUP(OBS=20) OUT = CARS_NDK NODUPKEY;
2BY TYPE ORIGIN;
3RUN;
4 
5PROC PRINT DATA = CARS_NDK;
6RUN;
6 Bloc de code
PROC SORT Data
Explication :
Trie les 20 premières observations de CARS_DUP. L'option NOUNIQUEKEY supprime les observations qui sont uniques par rapport aux variables de l'instruction BY (c'est-à-dire, ne garde que les doublons). Le résultat est stocké dans CARS_NQK et affiché.
Copié !
1PROC SORT DATA = CARS_DUP(OBS=20) OUT = CARS_NQK NOUNIQUEKEY;
2BY TYPE ORIGIN;
3RUN;
4 
5PROC PRINT DATA = CARS_NQK;
6RUN;
7 Bloc de code
PROC SORT Data
Explication :
Trie les 20 premières observations de CARS_DUP. L'option NODUP (ou NODUPREC) supprime les observations qui sont des doublons complets (toutes les variables sont identiques), après le tri par TYPE et ORIGIN. Le résultat est stocké dans CARS_ND et affiché.
Copié !
1PROC SORT DATA = CARS_DUP(OBS=20) OUT = CARS_ND NODUP;
2BY TYPE ORIGIN;
3RUN;
4 
5PROC PRINT DATA = CARS_ND;
6RUN;
8 Bloc de code
PROC FREQ Data
Explication :
Calcule les fréquences pour la variable DRIVETRAIN de la table CARS. NOPRINT empêche l'affichage des résultats. L'option OUT= CARS_FREQ sauvegarde les résultats (fréquence et pourcentage) dans la table CARS_FREQ, qui est ensuite affichée.
Copié !
1/* PROC FREQ */
2PROC FREQ DATA = CARS NOPRINT;
3TABLE DRIVETRAIN / OUT = CARS_FREQ;
4RUN;
5 
6PROC PRINT DATA = CARS_FREQ;
7RUN;
9 Bloc de code
PROC FREQ
Explication :
Génère deux tables de contingence (croisées). Les options NOCOL, NOROW, et NOPERCENT suppriment les pourcentages de colonne, de ligne et totaux, n'affichant que les fréquences brutes. MISSING inclut les valeurs manquantes dans l'analyse.
Copié !
1PROC FREQ DATA = CARS;
2TABLE DRIVETRAIN * ORIGIN/NOCOL NOROW NOPERCENT MISSING;
3RUN;
4 
5 
6/* */
7PROC FREQ DATA = CARS;
8TABLE ORIGIN * DRIVETRAIN/NOCOL NOROW NOPERCENT MISSING;
9RUN;
10 Bloc de code
PROC FREQ
Explication :
Démontre des utilisations avancées de PROC FREQ. Le premier bloc filtre les données pour les 'SUV' avant de calculer les fréquences. Le second crée une table de contingence à trois dimensions sur un sous-ensemble de 20 observations. Le troisième regroupe TYPE et DRIVETRAIN pour les croiser avec ORIGIN.
Copié !
1PROC FREQ DATA = CARS;
2TABLE DRIVETRAIN * ORIGIN;
3WHERE TYPE = "SUV";
4RUN;
5 
6PROC FREQ DATA = CARS(OBS=20);
7TABLE TYPE * DRIVETRAIN * ORIGIN;
8RUN;
9 
10PROC FREQ DATA = CARS;
11TABLE (TYPE DRIVETRAIN) * ORIGIN;
12RUN;
11 Bloc de code
PROC UNIVARIATE
Explication :
Calcule des statistiques descriptives détaillées (moyenne, médiane, écart-type, quantiles, etc.) pour la variable numérique MSRP dans la table CARS.
Copié !
1/* PROC UNIVARIATE */
2PROC UNIVARIATE DATA = CARS;
3VAR MSRP;
4RUN;
12 Bloc de code
PROC UNIVARIATE
Explication :
Tente de calculer des statistiques univariées sur une variable caractère (MAKE). SAS produira des fréquences et des informations de base, mais la plupart des statistiques numériques seront manquantes, ce qui est normal pour ce type de variable.
Copié !
1PROC UNIVARIATE DATA = CARS;
2VAR MAKE;
3RUN;
13 Bloc de code
PROC UNIVARIATE
Explication :
Calcule les statistiques univariées pour la variable MSRP, mais de manière distincte pour chaque catégorie de la variable MAKE (la variable de classification). L'analyse est effectuée sur les 100 premières observations.
Copié !
1PROC UNIVARIATE DATA = CARS(OBS=100);
2VAR MSRP;
3CLASS MAKE;
4RUN;
14 Bloc de code
PROC SORT Data
Explication :
Prépare les données pour la transposition. Un sous-ensemble de données (CARS_MAMS) est créé, puis trié par MAKE et TYPE en supprimant les doublons pour s'assurer une structure adéquate pour PROC TRANSPOSE. La table résultante CARS_MAMSD est affichée.
Copié !
1/* PROC TRANSPOSE */
2DATA CARS_MAMS;
3KEEP MAKE TYPE MSRP;
4SET SASHELP.CARS;
5RUN;
6 
7PROC SORT DATA = CARS_MAMS OUT = CARS_MAMSD NODUPKEY;
8BY MAKE TYPE;
9RUN;
10 
11PROC PRINT DATA = CARS_MAMSD;
12RUN;
15 Bloc de code
PROC TRANSPOSE Data
Explication :
Transpose la table CARS_MAMSD. Les valeurs de la variable MSRP sont transposées. Les nouvelles colonnes seront nommées COL1, COL2, etc., car il n'y a pas d'instruction ID. Le résultat est stocké dans une table par défaut (généralement DATAn) et affiché dans la fenêtre de résultats.
Copié !
1PROC TRANSPOSE DATA = CARS_MAMSD;
2VAR MSRP;
3BY MAKE;
4RUN;
16 Bloc de code
PROC TRANSPOSE Data
Explication :
Transpose la table CARS_MAMSD et stocke le résultat dans CARS_M. Les valeurs de MSRP sont transposées. L'instruction ID TYPE utilise les valeurs de la variable TYPE pour nommer les nouvelles colonnes. L'option PREFIX=ID_ ajoute 'ID_' devant les noms de colonnes créés lorsque les valeurs de TYPE ne sont pas des noms de variables SAS valides. La table finale est affichée.
Copié !
1PROC TRANSPOSE DATA = CARS_MAMSD OUT = CARS_M PREFIX = ID_;
2VAR MSRP;
3BY MAKE;
4ID TYPE;
5RUN;
6 
7PROC PRINT DATA = CARS_M;
8RUN;
17 Bloc de code
PROC SURVEYSELECT Data
Explication :
Effectue un échantillonnage aléatoire simple (Simple Random Sampling - SRS) sur la table CARS_MAMS. Sélectionne exactement 3 observations (N=3) et les sauvegarde dans la table de sortie CARS_SRS_N3, qui est ensuite affichée.
Copié !
1/* PROC SURVEYSELECT */
2PROC SURVEYSELECT
3 DATA = CARS_MAMS METHOD = SRS N = 3
4 OUT = CARS_SRS_N3;
5RUN;
6 
7PROC PRINT DATA = CARS_SRS_N3;
8RUN;
18 Bloc de code
PROC SURVEYSELECT Data
Explication :
Effectue un échantillonnage aléatoire simple (SRS) en sélectionnant un pourcentage de la population. SAMPRATE=0.01 signifie que 1% des observations de CARS_MAMS seront sélectionnées. Le résultat est stocké dans CARS_SRS_P1 et affiché.
Copié !
1PROC SURVEYSELECT
2 DATA = CARS_MAMS METHOD = SRS SAMPRATE = 0.01
3 OUT = CARS_SRS_P1;
4RUN;
5 
6PROC PRINT DATA = CARS_SRS_P1;
7RUN;
19 Bloc de code
PROC SURVEYSELECT Data
Explication :
Effectue un échantillonnage stratifié. Les données sont d'abord divisées en strates basées sur la variable MAKE. Ensuite, un échantillonnage aléatoire simple (SRS) est appliqué à chaque strate pour sélectionner 1% des observations (SAMPRATE=0.01). Le résultat est sauvegardé dans CARS_SRS_N1 et affiché.
Copié !
1PROC SURVEYSELECT
2 DATA = CARS_MAMS METHOD = SRS SAMPRATE = 0.01
3 OUT = CARS_SRS_N1;
4STRATA MAKE;
5RUN;
6 
7PROC PRINT DATA = CARS_SRS_N1;
8RUN;
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.