Publié le :
ETL CREATION_INTERNE

Calcul de notes et moyennes pour des étudiants

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script se compose de trois paires de blocs DATA STEP / PROC PRINT. Le premier bloc (Grades1) calcule une moyenne de deux manières pour mettre en évidence la gestion des valeurs manquantes, puis attribue une note. Le deuxième bloc (Grades2) montre une syntaxe alternative pour les comparaisons de plages. Le troisième bloc (Grades3) démontre l'utilisation des opérateurs logiques AND (&) et OR (|) pour modifier un calcul. Chaque table créée est ensuite affichée avec PROC PRINT.
Analyse des données

Type : CREATION_INTERNE


Les données des étudiants sont intégrées directement dans chaque étape DATA via l'instruction 'DATALINES', ce qui rend le script autonome.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée la table 'Grades1'. Il lit les données des étudiants. 'actualavg' est calculé avec la fonction MEAN, qui ignore les valeurs manquantes. 'avgscore' est calculé manuellement, ce qui propage les valeurs manquantes (le résultat sera manquant si une note l'est). Une série de conditions IF/ELSE IF attribue une note textuelle dans la variable 'result' en fonction de 'avgscore'.
Copié !
1DATA Grades1;
2 LENGTH RESULT $12.;
3 INPUT subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
4 actualavg = mean(exam1,exam2,exam3,exam4,exam5,project,finalexam);
5 avgscore = (exam1+exam2+exam3+exam4+exam5+project+finalexam)/7;
6
7 IF avgscore=. THEN RESULT='Invalid'; * missing value;
8 ELSE IF avgscore >= 90 THEN RESULT='A+';
9 ELSE IF avgscore >= 88 AND avgscore < 90 THEN RESULT='A';
10 ELSE IF avgscore >= 86 AND avgscore < 88 THEN RESULT='B';
11 ELSE IF avgscore >= 84 AND avgscore < 86 THEN RESULT='C';
12 ELSE IF avgscore < 84 THEN RESULT='F';
13
14 DATALINES;
151011 Alia Bhatt 2 100 65 83 84 99 91 96
161012 Maria Smith 1 78 82 86 . 100 95 97
171111 Thomas Jones 2 88 81 96 69 91 90 98
181121 Benedictine Arnold 2 68 82 82 89 89 93 99
191301 Trisha Gupta 1 51 69 79 59 85 64 100
20;
21RUN;
2 Bloc de code
PROC PRINT
Explication :
Cette procédure affiche les colonnes 'name', 'actualavg', 'avgscore' et 'result' de la table 'Grades1' pour visualiser les résultats du premier DATA STEP.
Copié !
1 
2PROC PRINT
3DATA=Grades1;
4var name actualavg avgscore RESULT;
5RUN;
6 
3 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée la table 'Grades2'. Il est similaire au premier mais utilise une syntaxe alternative pour les conditions de fourchette (ex: '90<=x<=100') pour attribuer la note. Il utilise une variable intermédiaire 'x' pour le calcul de la moyenne.
Copié !
1DATA Grades2;
2 LENGTH RESULT $12.;
3 INPUT subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
4 actualavg = mean(exam1,exam2,exam3,exam4,exam5,project,finalexam);
5 x = (exam1+exam2+exam3+exam4+exam5+project+finalexam)/7;
6
7 IF x=. THEN RESULT='Invalid'; * missing value;
8 ELSE IF 90<=x<=100 THEN RESULT='A+';
9 ELSE IF 88<=x<90 THEN RESULT='A';
10 ELSE IF 86<=x<88 THEN RESULT='B';
11 ELSE IF 84<=x<86 THEN RESULT='C';
12 ELSE IF 0<=x<84 THEN RESULT='F';
13
14 avgscore = x;
15
16 DATALINES;
171011 Alia Bhatt 2 100 65 83 84 99 91 96
181012 Maria Smith 1 78 82 86 . 100 95 97
191111 Thomas Jones 2 88 81 96 69 91 90 98
201121 Benedictine Arnold 2 68 82 82 89 89 93 99
211301 Trisha Gupta 1 51 69 79 59 85 64 100
22;
23RUN;
4 Bloc de code
PROC PRINT
Explication :
Cette procédure affiche les colonnes 'name', 'actualavg', 'avgscore' et 'result' de la table 'Grades2'.
Copié !
1 
2PROC PRINT
3DATA=Grades2;
4var name actualavg avgscore RESULT;
5RUN;
6 
5 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée la table 'Grades3'. Il calcule une moyenne 'x' arrondie à une décimale. Ensuite, il utilise une condition complexe avec les opérateurs logiques 'ET' (& ou and) et 'OU' (|) pour créer une nouvelle variable 'y'. 'y' est incrémenté de 1 si les notes des trois premiers examens sont croissantes OU si les notes des examens 3 à 5 sont croissantes.
Copié !
1DATA Grades3;
2 INPUT subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
3 x = round(((exam1+exam2+exam3+exam4+exam5+project+finalexam)/7),1);
4
5 IF (exam1
6 THEN y=x+1;
7 ELSE y=x;
8 
9 DATALINES;
101011 Alia Bhatt 2 100 65 83 84 99 91 96
111012 Maria Smith 1 78 82 86 . 100 95 97
121111 Thomas Jones 2 88 81 96 69 91 90 98
131121 Benedictine Arnold 2 68 82 82 89 89 93 99
141301 Trisha Gupta 1 51 69 79 59 85 64 100
15;
16RUN;
6 Bloc de code
PROC PRINT
Explication :
Cette procédure affiche les notes, la moyenne calculée 'x' et la valeur conditionnelle 'y' de la table 'Grades3' pour illustrer l'effet des opérateurs logiques.
Copié !
1 
2PROC PRINT
3DATA=Grades3;
4var name exam1 exam2 exam3 exam4 exam5 x y;
5RUN;
6 
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.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« La structure utilisée ici — valider la donnée, calculer, puis attribuer un libellé — est la base de tout processus de scoring ou de classification. L'utilisation systématique de la PROC PRINT après chaque étape permet un contrôle qualité (audit) immédiat, garantissant que les règles métier ont été appliquées correctement à chaque observation. »