Veröffentlicht am :

Vorbereitung von Erdbebendaten

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Programm liest Daten aus dem SASHELP.QUAKES-Datensatz, der Informationen zu Erdbeben enthält. Es führt mehrere Transformationen an den Daten durch: Es initialisiert eine neue Textvariable 'Depth_Cat' zur Speicherung von Tiefenkategorien, rundet die Variable 'Magnitude' auf eine Dezimalstelle und versucht, die 'Depth' in 'Shallow', 'Intermediate' oder 'Deep' zu kategorisieren. Aufgrund der sequenziellen Implementierung von 'IF'-Anweisungen ohne 'ELSE IF'-Klauseln wird die Variable 'Depth_Cat' jedoch für jede Beobachtung, bei der die Tiefe kleiner oder gleich 700 ist, letztendlich auf 'Deep' gesetzt, wodurch frühere Zuweisungen überschrieben werden. Die resultierende Tabelle 'work.earthquakes' enthält alle ursprünglichen Variablen plus die neuen Variablen 'Depth_Cat' und die modifizierte 'Magnitude'.
Datenanalyse

Type : SASHELP


Die Daten werden aus dem Datensatz 'quakes' gelesen, der Teil der mit SAS gelieferten Standardbibliothek 'SASHELP' ist. Es handelt sich nicht um eine externe Datenquelle in dem Sinne, dass sie manuell vom Skript verwaltet oder geladen werden müsste.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser Codeblock ist ein DATA STEP, der einen neuen Datensatz namens 'work.earthquakes' erstellt. Er liest alle Beobachtungen aus dem Quelldatensatz 'sashelp.quakes'.

1. `length Depth_Cat $ 12;`: Definiert die Länge der neuen Zeichenvariablen 'Depth_Cat' auf 12 Zeichen.
2. `Magnitude=round(Magnitude, .1);`: Rundet die numerische Variable 'Magnitude' auf die erste Dezimalstelle.
3. `if Depth<70 then Depth_Cat="Shallow";`: Versucht, die Tiefe zu kategorisieren. Wenn 'Depth' kleiner als 70 ist, wird 'Depth_Cat' auf 'Shallow' gesetzt.
4. `if Depth<300 then Depth_Cat="Intermediate";`: Wenn 'Depth' kleiner als 300 ist, wird 'Depth_Cat' auf 'Intermediate' gesetzt.
5. `if Depth<=700 then Depth_Cat="Deep";`: Wenn 'Depth' kleiner oder gleich 700 ist, wird 'Depth_Cat' auf 'Deep' gesetzt.

**Wichtiger Hinweis zur Kategorisierungslogik:** Aufgrund der Verwendung sequenzieller `IF`-Anweisungen ohne `ELSE IF`-Klauseln werden die Bedingungen unabhängig voneinander ausgewertet. Das bedeutet, dass, wenn eine Tiefe beispielsweise 50 beträgt (also < 70, < 300 und <= 700), 'Depth_Cat' zuerst auf 'Shallow', dann überschrieben durch 'Intermediate' und dann erneut überschrieben durch 'Deep' gesetzt wird. Folglich wird für alle Tiefen <= 700 der Wert von 'Depth_Cat' letztendlich 'Deep' sein. Für eine gegenseitig ausschließende Kategorisierung wäre die Verwendung von `IF...THEN ELSE IF...` notwendig.
Kopiert!
1DATA work.earthquakes;
2 SET sashelp.quakes;
3 LENGTH Depth_Cat $ 12;
4 Magnitude=round(Magnitude, .1);
5 IF Depth<70 THEN Depth_Cat="Shallow";
6 IF Depth<300 THEN Depth_Cat="Intermediate";
7 IF Depth<=700 THEN Depth_Cat="Deep";
8RUN;
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.