Makro addvar - Textvariablen aufteilen

Dieser Code ist auch verfügbar auf: English Español Français
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Das Makro `addvar` analysiert eine gegebene Variable in einer Eingabetabelle. Wenn der Inhalt die Länge `maxlen` (Standard 200) überschreitet, wird ein externes Makro `%gmModifySplit` zur Vorbereitung der Aufteilung verwendet, und anschließend der Text mittels eines definierten Trennzeichens auf mehrere neue, indizierte Variablen verteilt. Wenn die Länge unter dem Limit liegt, wird die Variable einfach formatiert und kopiert. Beachten Sie, dass das Makro die Eingabetabelle (`&in_data`) ändert, wenn die Aufteilung aktiviert ist.
Datenanalyse

Type : EXTERNE


Die Daten werden durch den Makroparameter `in_data` definiert. Das Skript erwartet eine vorhandene Tabelle.

1 Codeblock
PROC SQL
Erklärung :
Berechnung der maximalen Länge der Textvariablen in der Eingabetabelle, um festzustellen, ob die Aufteilungsverarbeitung erforderlich ist.
Kopiert!
1PROC SQL noprint;
2 select distinct max(LENGTH(&in_var)) into :lngth
3 from &in_data;
4QUIT;
2 Codeblock
DATA STEP Data
Erklärung :
Ausgeführt, wenn die Länge das Limit überschreitet: Vorbereitung der Eingabetabelle durch Umbenennen der Variablen und Aufruf des externen Makros `%gmModifySplit`.
Kopiert!
1DATA &in_data;
2 SET &in_data(rename=&in_var=_&in_var._);
3 %gmModifySplit(var=_&in_var._, width=&maxlen);
4RUN;
3 Codeblock
PROC SQL
Erklärung :
Bestimmung der Anzahl der benötigten zusätzlichen Variablen durch Zählen der Vorkommen des Trennzeichens.
Kopiert!
1PROC SQL noprint;
2 select cats(max(count(_&in_var._, "&split"))) into :varn
3 from &in_data;
4QUIT;
4 Codeblock
DATA STEP Data
Erklärung :
Erstellung der finalen Ausgabetabelle. Der Text wird über die Funktion `scan` in ein Array von Variablen (`vlst`) aufgeteilt.
Kopiert!
1DATA &out_data;
2 SET &in_data;
3 array vlst{*} $200 &out_pre. &out_pre.1 - &out_pre.&varn;
4 DO i=1 to %eval(&varn+1);
5 vlst(i)=scan(_&in_var._, i, "&split");
6 END;
7 drop _&in_var._ i;
8RUN;
5 Codeblock
DATA STEP Data
Erklärung :
Alternative (ELSE): Wenn keine Aufteilung erforderlich ist, wird die Ausgabetabelle mit der einfach an die Standardlänge angepassten Variablen erstellt.
Kopiert!
1DATA &out_data;
2 SET &in_data(rename=&in_var=_&in_var._);
3 LENGTH &out_pre $200;
4 &out_pre=_&in_var._;
5 drop _&in_var._;
6RUN;
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.
Urheberrechtsinformationen : PAREXEL INTERNATIONAL LTD / Janssen Research & Development, LLC


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.