Ce script génère d'abord un jeu de données de test (wbh) contenant des combinaisons simulées d'âge et de race via des boucles imbriquées. Il effectue ensuite une transformation avancée dans une étape DATA en utilisant un ARRAY et l'instruction RETAIN pour manipuler les données horizontalement (type pivot) et calculer des sommes, avec une réinitialisation des variables au changement de groupe d'âge.
Analyse des données
Type : CREATION_INTERNE
Les données sont entièrement générées par le code via des boucles DO imbriquées, aucune source externe n'est requise.
1 Bloc de code
DATA STEP Data
Explication : Création du jeu de données 'wbh' par simulation. Deux boucles imbriquées génèrent des observations pour 10 âges et 8 races, calculant une variable 'n' comme produit des deux.
Copié !
data wbh;
do age=1 to 10;
do race=1 to 8;
n=age*race;
output;
end;
end;
run;
1
DATA wbh;
2
DO age=1 to 10;
3
DO race=1 to 8;
4
n=age*race;
5
OUTPUT;
6
END;
7
END;
8
RUN;
2 Bloc de code
PROC PRINT
Explication : Affichage du contenu de la table 'wbh' générée précédemment.
Copié !
proc print;run;
1
PROC PRINT;RUN;
3 Bloc de code
DATA STEP Data
Explication : Transformation des données. Utilisation d'un tableau 'a' (variables m1-m8) avec RETAIN pour conserver les valeurs entre les itérations. La boucle 'do i=1 to 8' réinitialise les valeurs à manquant (.) au début de chaque groupe d'âge (first.age). La valeur 'n' est assignée à l'index correspondant à la 'race', et une somme totale 'totn' est calculée.
Copié !
data test; set wbh; by age race;
array a(8) m1-m8;
retain m1-m8;
do i=1 to 8;
if first.age then do;
a(i)=.;
end;
end;
a(race)=n;
totn=sum(of m1-m8);
run;
1
DATA test; SET wbh; BY age race;
2
array a(8) m1-m8;
3
retain m1-m8;
4
DO i=1 to 8;
5
IF first.age THENDO;
6
a(i)=.;
7
END;
8
END;
9
10
a(race)=n;
11
totn=sum(of m1-m8);
12
RUN;
4 Bloc de code
PROC PRINT
Explication : Affichage du résultat final contenu dans la table 'test'.
Copié !
proc print;run;
1
PROC PRINT;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.