Veröffentlicht am :
ETL CREATION_INTERNE

Berechnung von Noten und Durchschnitten für Studenten

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript besteht aus drei Paaren von DATA STEP / PROC PRINT-Blöcken. Der erste Block (Grades1) berechnet einen Durchschnitt auf zwei Arten, um den Umgang mit fehlenden Werten hervorzuheben, und weist dann eine Note zu. Der zweite Block (Grades2) zeigt eine alternative Syntax für Bereichsvergleiche. Der dritte Block (Grades3) demonstriert die Verwendung der logischen Operatoren UND (&) und ODER (|), um eine Berechnung zu ändern. Jede erstellte Tabelle wird anschließend mit PROC PRINT angezeigt.
Datenanalyse

Type : CREATION_INTERNE


Die Studentendaten werden über die Anweisung 'DATALINES' direkt in jeden DATA-Schritt integriert, wodurch das Skript eigenständig ist.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser Block erstellt die Tabelle 'Grades1'. Er liest die Studentendaten. 'actualavg' wird mit der Funktion MEAN berechnet, die fehlende Werte ignoriert. 'avgscore' wird manuell berechnet, wodurch fehlende Werte weitergegeben werden (das Ergebnis ist fehlend, wenn eine Note fehlt). Eine Reihe von IF/ELSE IF-Bedingungen weist eine Textnote in der Variablen 'result' basierend auf 'avgscore' zu.
Kopiert!
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 Codeblock
PROC PRINT
Erklärung :
Diese Prozedur zeigt die Spalten 'name', 'actualavg', 'avgscore' und 'result' der Tabelle 'Grades1' an, um die Ergebnisse des ersten DATA STEP zu visualisieren.
Kopiert!
1 
2PROC PRINT
3DATA=Grades1;
4var name actualavg avgscore RESULT;
5RUN;
6 
3 Codeblock
DATA STEP Data
Erklärung :
Dieser Block erstellt die Tabelle 'Grades2'. Er ähnelt dem ersten, verwendet aber eine alternative Syntax für Bereichsbedingungen (z. B. '90<=x<=100'), um die Note zuzuweisen. Er verwendet eine Zwischenvariable 'x' für die Durchschnittsberechnung.
Kopiert!
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 Codeblock
PROC PRINT
Erklärung :
Diese Prozedur zeigt die Spalten 'name', 'actualavg', 'avgscore' und 'result' der Tabelle 'Grades2' an.
Kopiert!
1 
2PROC PRINT
3DATA=Grades2;
4var name actualavg avgscore RESULT;
5RUN;
6 
5 Codeblock
DATA STEP Data
Erklärung :
Dieser Block erstellt die Tabelle 'Grades3'. Er berechnet einen Durchschnitt 'x', gerundet auf eine Dezimalstelle. Anschließend verwendet er eine komplexe Bedingung mit den logischen Operatoren 'UND' (& oder and) und 'ODER' (|), um eine neue Variable 'y' zu erstellen. 'y' wird um 1 erhöht, wenn die Noten der ersten drei Prüfungen aufsteigend sind ODER wenn die Noten der Prüfungen 3 bis 5 aufsteigend sind.
Kopiert!
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 Codeblock
PROC PRINT
Erklärung :
Diese Prozedur zeigt die Noten, den berechneten Durchschnitt 'x' und den bedingten Wert 'y' der Tabelle 'Grades3' an, um den Effekt der logischen Operatoren zu veranschaulichen.
Kopiert!
1 
2PROC PRINT
3DATA=Grades3;
4var name exam1 exam2 exam3 exam4 exam5 x y;
5RUN;
6 
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.