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é !
OPTIONS COMPRESS = YES;
DATA CARS;
SET SASHELP.CARS;
RUN;
1
OPTIONS COMPRESS = YES;
2
3
DATA CARS;
4
SET SASHELP.CARS;
5
RUN;
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é !
/* PROC SORT */
PROC SORT DATA = SASHELP.CARS;
BY MSRP;
RUN;
1
/* PROC SORT */
2
PROC SORTDATA = SASHELP.CARS;
3
BY MSRP;
4
RUN;
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é !
PROC SORT DATA = SASHELP.CARS OUT = CARS_MSRP;
BY DESCENDING MSRP;
RUN;
PROC SORT DATA = SASHELP.CARS OUT = CARS_MAKE;
BY MAKE;
RUN;
1
PROC SORTDATA = SASHELP.CARS OUT = CARS_MSRP;
2
BY DESCENDING MSRP;
3
RUN;
4
5
PROC SORTDATA = SASHELP.CARS OUT = CARS_MAKE;
6
BY MAKE;
7
RUN;
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é !
DATA CARS_DUP;
KEEP TYPE ORIGIN DRIVETRAIN;
SET SASHELP.CARS;
RUN;
PROC PRINT DATA = CARS_DUP(OBS=20);
RUN;
1
DATA CARS_DUP;
2
KEEP TYPE ORIGIN DRIVETRAIN;
3
SET SASHELP.CARS;
4
RUN;
5
6
PROC PRINTDATA = CARS_DUP(OBS=20);
7
RUN;
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é !
PROC SORT DATA = CARS_DUP(OBS=20) OUT = CARS_NDK NODUPKEY;
BY TYPE ORIGIN;
RUN;
PROC PRINT DATA = CARS_NDK;
RUN;
1
PROC SORTDATA = CARS_DUP(OBS=20) OUT = CARS_NDK NODUPKEY;
2
BY TYPE ORIGIN;
3
RUN;
4
5
PROC PRINTDATA = CARS_NDK;
6
RUN;
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é !
PROC SORT DATA = CARS_DUP(OBS=20) OUT = CARS_NQK NOUNIQUEKEY;
BY TYPE ORIGIN;
RUN;
PROC PRINT DATA = CARS_NQK;
RUN;
1
PROC SORTDATA = CARS_DUP(OBS=20) OUT = CARS_NQK NOUNIQUEKEY;
2
BY TYPE ORIGIN;
3
RUN;
4
5
PROC PRINTDATA = CARS_NQK;
6
RUN;
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é !
PROC SORT DATA = CARS_DUP(OBS=20) OUT = CARS_ND NODUP;
BY TYPE ORIGIN;
RUN;
PROC PRINT DATA = CARS_ND;
RUN;
1
PROC SORTDATA = CARS_DUP(OBS=20) OUT = CARS_ND NODUP;
2
BY TYPE ORIGIN;
3
RUN;
4
5
PROC PRINTDATA = CARS_ND;
6
RUN;
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é !
/* PROC FREQ */
PROC FREQ DATA = CARS NOPRINT;
TABLE DRIVETRAIN / OUT = CARS_FREQ;
RUN;
PROC PRINT DATA = CARS_FREQ;
RUN;
1
/* PROC FREQ */
2
PROC FREQDATA = CARS NOPRINT;
3
TABLE DRIVETRAIN / OUT = CARS_FREQ;
4
RUN;
5
6
PROC PRINTDATA = CARS_FREQ;
7
RUN;
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.
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é !
PROC FREQ DATA = CARS;
TABLE DRIVETRAIN * ORIGIN;
WHERE TYPE = "SUV";
RUN;
PROC FREQ DATA = CARS(OBS=20);
TABLE TYPE * DRIVETRAIN * ORIGIN;
RUN;
PROC FREQ DATA = CARS;
TABLE (TYPE DRIVETRAIN) * ORIGIN;
RUN;
1
PROC FREQDATA = CARS;
2
TABLE DRIVETRAIN * ORIGIN;
3
WHERE TYPE = "SUV";
4
RUN;
5
6
PROC FREQDATA = CARS(OBS=20);
7
TABLE TYPE * DRIVETRAIN * ORIGIN;
8
RUN;
9
10
PROC FREQDATA = CARS;
11
TABLE (TYPE DRIVETRAIN) * ORIGIN;
12
RUN;
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é !
/* PROC UNIVARIATE */
PROC UNIVARIATE DATA = CARS;
VAR MSRP;
RUN;
1
/* PROC UNIVARIATE */
2
PROC UNIVARIATEDATA = CARS;
3
VAR MSRP;
4
RUN;
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é !
PROC UNIVARIATE DATA = CARS;
VAR MAKE;
RUN;
1
PROC UNIVARIATEDATA = CARS;
2
VAR MAKE;
3
RUN;
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é !
PROC UNIVARIATE DATA = CARS(OBS=100);
VAR MSRP;
CLASS MAKE;
RUN;
1
PROC UNIVARIATEDATA = CARS(OBS=100);
2
VAR MSRP;
3
CLASS MAKE;
4
RUN;
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é !
/* PROC TRANSPOSE */
DATA CARS_MAMS;
KEEP MAKE TYPE MSRP;
SET SASHELP.CARS;
RUN;
PROC SORT DATA = CARS_MAMS OUT = CARS_MAMSD NODUPKEY;
BY MAKE TYPE;
RUN;
PROC PRINT DATA = CARS_MAMSD;
RUN;
1
/* PROC TRANSPOSE */
2
DATA CARS_MAMS;
3
KEEP MAKE TYPE MSRP;
4
SET SASHELP.CARS;
5
RUN;
6
7
PROC SORTDATA = CARS_MAMS OUT = CARS_MAMSD NODUPKEY;
8
BY MAKE TYPE;
9
RUN;
10
11
PROC PRINTDATA = CARS_MAMSD;
12
RUN;
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é !
PROC TRANSPOSE DATA = CARS_MAMSD;
VAR MSRP;
BY MAKE;
RUN;
1
PROC TRANSPOSEDATA = CARS_MAMSD;
2
VAR MSRP;
3
BY MAKE;
4
RUN;
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é !
PROC TRANSPOSE DATA = CARS_MAMSD OUT = CARS_M PREFIX = ID_;
VAR MSRP;
BY MAKE;
ID TYPE;
RUN;
PROC PRINT DATA = CARS_M;
RUN;
1
PROC TRANSPOSEDATA = CARS_MAMSD OUT = CARS_M PREFIX = ID_;
2
VAR MSRP;
3
BY MAKE;
4
ID TYPE;
5
RUN;
6
7
PROC PRINTDATA = CARS_M;
8
RUN;
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é !
/* PROC SURVEYSELECT */
PROC SURVEYSELECT
DATA = CARS_MAMS METHOD = SRS N = 3
OUT = CARS_SRS_N3;
RUN;
PROC PRINT DATA = CARS_SRS_N3;
RUN;
1
/* PROC SURVEYSELECT */
2
PROC SURVEYSELECT
3
DATA = CARS_MAMS METHOD = SRS N = 3
4
OUT = CARS_SRS_N3;
5
RUN;
6
7
PROC PRINTDATA = CARS_SRS_N3;
8
RUN;
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é !
PROC SURVEYSELECT
DATA = CARS_MAMS METHOD = SRS SAMPRATE = 0.01
OUT = CARS_SRS_P1;
RUN;
PROC PRINT DATA = CARS_SRS_P1;
RUN;
1
PROC SURVEYSELECT
2
DATA = CARS_MAMS METHOD = SRS SAMPRATE = 0.01
3
OUT = CARS_SRS_P1;
4
RUN;
5
6
PROC PRINTDATA = CARS_SRS_P1;
7
RUN;
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é !
PROC SURVEYSELECT
DATA = CARS_MAMS METHOD = SRS SAMPRATE = 0.01
OUT = CARS_SRS_N1;
STRATA MAKE;
RUN;
PROC PRINT DATA = CARS_SRS_N1;
RUN;
1
PROC SURVEYSELECT
2
DATA = CARS_MAMS METHOD = SRS SAMPRATE = 0.01
3
OUT = CARS_SRS_N1;
4
STRATA MAKE;
5
RUN;
6
7
PROC PRINTDATA = CARS_SRS_N1;
8
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.