SAS2PYTHON - WHILE-Schleifen mit IF-Anweisungen


Posted on 1 August 2022 at 09:15 by Stefan Weingaertner

In der Episode 17 unseres heutigen Blog-Beitrags zeigen wir, wie man in SAS/BASE und in Pandas WHILE-Schleifen anwendet, auf ein berechnetes Ergebnis eine bedingte Anweisung anwendet und das Ergebnis in ein SAS Data Set bzw. Pandas DataFrame schreibt.



Dabei soll der generierte Output wie folgt aussehen:

  1. Wir erzeugen über die WHILE-Schleife eine Laufvariable i mit dem Wertebereich bis 7.
  2. Wir quadrieren die Laufvariable und erzeugen die Variable i_square.
  3. Wir prüfen, ob die quadrierte Laufvariable größer als 9 ist. Falls ja, vergeben wir True, falls nein False.
  4. Wir schreiben das Ergebnis in eine Tabelle (SAS Data Set oder Pandas DataFrame).

                      
i  i_square  greater_9
1         1      False
2         4      False
3         9      False
4        16       True
5        25       True
6        36       True
7        49       True
                    


SAS-Code: In SAS würde man die WHILE-Schleife zur Quadrierung der Laufvariablen und der Ableitung, ob die quadrierte Laufvariable größer als 9 ist, wie folgt umsetzen.


                      
data df;
 do while(i <= 7);
   i_square = i**2; /* values are 1, 4, 9, 16, 25, 36, 45 */
   if i_square > 9 then
    	greater_9 = 'True';
	else 
	greater_9 = 'False';
   output;
   i+1 ;
end;
run;
                    


SAS-Output: Das Ergebnis sieht in SAS wie folgt aus, das SAS Data Set hat insgesamt drei Spalten.


                      
Obs  i  i_square  greater_9
  1  1        1      False
  2  2        4      False
  3  3        9      False
  4  4       16       True
  5  5       25       True
  6  6       36       True
  7  7       49       True
                    




Python-Code: In Python würde man die WHILE-Schleife zur Quadrierung der Laufvariablen und der Ableitung, ob die quadrierte Laufvariable größer als 9 ist, wie folgt umsetzen. Zunächst erzeugen wir die Funktion "g_9" und wenden diese dann im Rahmen der WHILE-Schleife an.


                      
# Funktion g_9

def g_9(n):
    if n > 9: return 'True'
    else: return 'False'
                    
                      
import pandas as pd

df = pd.DataFrame()
i = 0
while (i <= 6):
	df=df.append({'i':i,'i_square':(i+1)**2, 'greater_9':g_9((i+1)**2)}, ignore_index=True)
	i = i + 1
                    


Python-Output: Das Ergebnis sieht in Pandas wie folgt aus, es wird ein Pandas DataFrame "df" angelegt mit insgesamt 3 Spalten.


                                            
     i  i_square greater_9
0  0.0       1.0     False
1  1.0       4.0     False
2  2.0       9.0     False
3  3.0      16.0      True
4  4.0      25.0      True
5  5.0      36.0      True
6  6.0      49.0      True
                    




Wenn Sie die nächste Episode nicht abwarten möchten, können Sie auch gerne unser umfangreiches Training Python für SAS Professionals buchen.

Informationen zu den nächsten Kursterminen und zu unserem gesamten Trainingsangebot finden Sie hier.