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!
DATA Grades1;
length result $12.;
input subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
actualavg = mean(exam1,exam2,exam3,exam4,exam5,project,finalexam);
avgscore = (exam1+exam2+exam3+exam4+exam5+project+finalexam)/7;
if avgscore=. then result='Invalid'; * missing value;
else if avgscore >= 90 then result='A+';
else if avgscore >= 88 AND avgscore < 90 then result='A';
else if avgscore >= 86 AND avgscore < 88 then result='B';
else if avgscore >= 84 AND avgscore < 86 then result='C';
else if avgscore < 84 then result='F';
DATALINES;
1011 Alia Bhatt 2 100 65 83 84 99 91 96
1012 Maria Smith 1 78 82 86 . 100 95 97
1111 Thomas Jones 2 88 81 96 69 91 90 98
1121 Benedictine Arnold 2 68 82 82 89 89 93 99
1301 Trisha Gupta 1 51 69 79 59 85 64 100
;
RUN;
1
DATA Grades1;
2
LENGTHRESULT $12.;
3
INPUT subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
IF avgscore=. THENRESULT='Invalid'; * missing value;
8
ELSEIF avgscore >= 90THENRESULT='A+';
9
ELSEIF avgscore >= 88 AND avgscore < 90THENRESULT='A';
10
ELSEIF avgscore >= 86 AND avgscore < 88THENRESULT='B';
11
ELSEIF avgscore >= 84 AND avgscore < 86THENRESULT='C';
12
ELSEIF avgscore < 84THENRESULT='F';
13
14
DATALINES;
15
1011 Alia Bhatt 2100658384999196
16
1012 Maria Smith 1788286 . 1009597
17
1111 Thomas Jones 288819669919098
18
1121 Benedictine Arnold 268828289899399
19
1301 Trisha Gupta 1516979598564100
20
;
21
RUN;
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!
PROC PRINT DATA=Grades1;
var name actualavg avgscore result;
RUN;
1
2
PROC PRINT
3
DATA=Grades1;
4
var name actualavg avgscore RESULT;
5
RUN;
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!
DATA Grades2;
length result $12.;
input subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
actualavg = mean(exam1,exam2,exam3,exam4,exam5,project,finalexam);
x = (exam1+exam2+exam3+exam4+exam5+project+finalexam)/7;
if x=. then result='Invalid'; * missing value;
else if 90<=x<=100 then result='A+';
else if 88<=x<90 then result='A';
else if 86<=x<88 then result='B';
else if 84<=x<86 then result='C';
else if 0<=x<84 then result='F';
avgscore = x;
DATALINES;
1011 Alia Bhatt 2 100 65 83 84 99 91 96
1012 Maria Smith 1 78 82 86 . 100 95 97
1111 Thomas Jones 2 88 81 96 69 91 90 98
1121 Benedictine Arnold 2 68 82 82 89 89 93 99
1301 Trisha Gupta 1 51 69 79 59 85 64 100
;
RUN;
1
DATA Grades2;
2
LENGTHRESULT $12.;
3
INPUT subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
x = (exam1+exam2+exam3+exam4+exam5+project+finalexam)/7;
6
7
IF x=. THENRESULT='Invalid'; * missing value;
8
ELSEIF90<=x<=100THENRESULT='A+';
9
ELSEIF88<=x<90THENRESULT='A';
10
ELSEIF86<=x<88THENRESULT='B';
11
ELSEIF84<=x<86THENRESULT='C';
12
ELSEIF 0<=x<84THENRESULT='F';
13
14
avgscore = x;
15
16
DATALINES;
17
1011 Alia Bhatt 2100658384999196
18
1012 Maria Smith 1788286 . 1009597
19
1111 Thomas Jones 288819669919098
20
1121 Benedictine Arnold 268828289899399
21
1301 Trisha Gupta 1516979598564100
22
;
23
RUN;
4 Codeblock
PROC PRINT
Erklärung : Diese Prozedur zeigt die Spalten 'name', 'actualavg', 'avgscore' und 'result' der Tabelle 'Grades2' an.
Kopiert!
PROC PRINT DATA=Grades2;
var name actualavg avgscore result;
RUN;
1
2
PROC PRINT
3
DATA=Grades2;
4
var name actualavg avgscore RESULT;
5
RUN;
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!
DATA Grades3;
input subj 1-4 name $ 5-23 sex exam1 exam2 exam3 exam4 exam5 project finalexam;
x = round(((exam1+exam2+exam3+exam4+exam5+project+finalexam)/7),1);
if (exam1<exam2 & exam2<exam3) | (exam3<exam4 and exam4<exam5)
then y=x+1;
else y=x;
DATALINES;
1011 Alia Bhatt 2 100 65 83 84 99 91 96
1012 Maria Smith 1 78 82 86 . 100 95 97
1111 Thomas Jones 2 88 81 96 69 91 90 98
1121 Benedictine Arnold 2 68 82 82 89 89 93 99
1301 Trisha Gupta 1 51 69 79 59 85 64 100
;
RUN;
1
DATA 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;
10
1011 Alia Bhatt 2100658384999196
11
1012 Maria Smith 1788286 . 1009597
12
1111 Thomas Jones 288819669919098
13
1121 Benedictine Arnold 268828289899399
14
1301 Trisha Gupta 1516979598564100
15
;
16
RUN;
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!
PROC PRINT DATA=Grades3;
var name exam1 exam2 exam3 exam4 exam5 x y;
RUN;
1
2
PROC PRINT
3
DATA=Grades3;
4
var name exam1 exam2 exam3 exam4 exam5 x y;
5
RUN;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.