Veröffentlicht am :
ETL CREATION_INTERNE

Transformation und Umrechnung von Gewichtseinheiten

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Skript verwendet einen DATA-Schritt, um Probanden-IDs und deren Gewichte zu lesen, die Einheiten wie 'kg' oder 'lbs' enthalten können. Das Gewicht wird zuerst in Großbuchstaben umgewandelt. Anschließend werden nicht-numerische Zeichen (Einheiten und Punkte) entfernt und der numerische Wert extrahiert. Wenn die ursprüngliche Einheit Kilogramm war (erkennbar an der Anwesenheit von 'K'), wird das Gewicht in Pfund umgerechnet. Nur die Probanden-ID und das umgerechnete numerische Gewicht werden beibehalten. Eine PROC PRINT wird verwendet, um den resultierenden Datensatz anzuzeigen.
Datenanalyse

Type : CREATION_INTERNE


Die Quelldaten sind direkt über einen DATALINES-Block in das Skript integriert. Sie enthalten Probanden-IDs und Gewichtswerte mit ihren Einheiten (z.B. '50kg', '121Lbs.', '88KG.', '200lb'). Der Pointer ' @code_sas/16.4'.sas wird verwendet, um mehrere Beobachtungen pro physischer Zeile zu lesen, was wie ein ' @@' mit den Datalines wirkt.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA-Block liest die über `datalines` bereitgestellten Daten. Er verwendet einen Zeiger (` @`), um das Lesen mehrerer Beobachtungen (Proband, Gewicht) pro physischer Zeile zu ermöglichen, da in der Iteration keine andere INPUT-Anweisung vorhanden ist. Die Variable `weight` wird in Großbuchstaben umgewandelt. Die Funktion `compress` wird verwendet, um die Zeichenfolge `weight` zu bereinigen, indem die Einheitenzeichen ('KGLBS.') und Punkte entfernt werden. Anschließend konvertiert `input` die bereinigte Zeichenfolge in einen numerischen Wert (`num_weight`). Wenn die ursprüngliche Einheit 'K' (Kilogramm) war, wird der Wert `num_weight` mit 2.2 multipliziert, um ihn in Pfund umzurechnen. Nur die Variablen `subj` und `num_weight` werden im finalen Datensatz `WT` beibehalten.
Kopiert!
1DATA WT;
2 INPUT subj weight $ @;
3 weight=upcase(weight);
4 num_weight=INPUT(compress(weight, "KGLBS."), 8.);
5 IF index(weight, "K") > 0 THEN num_weight = num_weight * 2.2;
6 keep subj num_weight;
7 
8DATALINES;
91 50kg 2 120 3 121Lbs. 4 88KG. 5 200
106 80kG 7 250lb
11;
12 
2 Codeblock
PROC PRINT
Erklärung :
Diese PROC PRINT zeigt den Inhalt des durch den vorherigen DATA-Schritt erstellten Datensatzes `WT` an, der die Probanden und ihre in Pfund umgerechneten Gewichte zeigt.
Kopiert!
1PROC PRINT;
2RUN;
3 
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.