Das Skript stellt 7 Anwendungsfälle für den Import von Textdaten vor: Standard-CSV-Lesen mit der DSD-Option, Verwendung des Tilde-Modifikators (~) für die erweiterte Anführungszeichenverwaltung, explizite Längendefinitionen, Verwendung mehrerer Trennzeichen gleichzeitig, Definition des Trennzeichens über eine Variable, dynamisches Lesen des Trennzeichens aus den Daten selbst und Verwendung einer vollständigen Zeichenfolge als Separator (DLMSTR).
Datenanalyse
Type : CREATION_INTERNE
Die Daten sind direkt im Code über die Anweisungen DATALINES und CARDS enthalten.
1 Codeblock
DATA STEP Data
Erklärung : Lesen eines Standard-CSV-Formats. Die Option `dlm=','` gibt das Komma als Trennzeichen an und `dsd` (Delimiter Sensitive Data) verwaltet Anführungszeichen und fehlende Werte korrekt.
Kopiert!
title '1.3.3a Delimited List Input Modifiers';
data base;
length lname $15;
infile datalines dlm=',' dsd;
input fname $ lname $ dob :mmddyy10.;
datalines;
'Sam','Johnson',12/15/1945
'Susan','Mc Callister',10/10/1983
run;
1
title '1.3.3a Delimited List Input Modifiers';
2
DATA base;
3
LENGTH lname $15;
4
INFILEDATALINES dlm=',' dsd;
5
INPUT fname $ lname $ dob :mmddyy10.;
6
DATALINES;
7
'Sam','Johnson',12/15/1945
8
'Susan','Mc Callister',10/10/1983
9
RUN;
2 Codeblock
DATA STEP Data
Erklärung : Verwendung des Modifikators `~` (Tilde) in der INPUT-Anweisung. Er ermöglicht hier das Lesen von Feldern, die potenziell Trennzeichen enthalten (wie das Komma in 'Fresno, CA'), unter Beachtung der DSD-Struktur.
Kopiert!
title2 'Using the ~ Format Modifier';
data base;
length lname $15;
infile datalines dlm=',' dsd;
input fname $ lname $ birthloc $~15. dob :mmddyy10. ;
datalines;
'Sam','Johnson', 'Fresno, CA','12/15/1945'
'Susan','Mc Callister','Seattle, WA',10/10/1983
run;
1
title2 'Using the ~ Format Modifier';
2
DATA base;
3
LENGTH lname $15;
4
INFILEDATALINES dlm=',' dsd;
5
INPUT fname $ lname $ birthloc $~15. dob :mmddyy10. ;
6
DATALINES;
7
'Sam','Johnson', 'Fresno, CA','12/15/1945'
8
'Susan','Mc Callister','Seattle, WA',10/10/1983
9
RUN;
3 Codeblock
DATA STEP Data
Erklärung : Lesen, bei dem die Länge der Variablen zuvor durch die Anweisung `LENGTH` definiert wird, was eine präzise Kontrolle der Speicherung ohne Modifikator im INPUT ermöglicht.
Kopiert!
title '1.3.3c Delimited List Input Modifiers';
/* ... */
data base;
length lname birthloc $15;
infile datalines dlm=',' dsd;
input fname $ lname $ birthloc $ dob :mmddyy10. ;
datalines;
/* Données ... */
run;
1
title '1.3.3c Delimited List Input Modifiers';
2
/* ... */
3
DATA base;
4
LENGTH lname birthloc $15;
5
INFILEDATALINES dlm=',' dsd;
6
INPUT fname $ lname $ birthloc $ dob :mmddyy10. ;
7
DATALINES;
8
/* Données ... */
9
RUN;
4 Codeblock
DATA STEP Data
Erklärung : Definition mehrerer möglicher Trennzeichen für dieselbe Datei. Hier gibt `dlm='/,'` an, dass der Schrägstrich ODER das Komma als Trennzeichen dienen können.
Kopiert!
title '1.3.3d Read delimited code with multiple delimiters';
data imports;
infile cards dlm='/,';
input id importcode $ value;
cards;
14,1,13
25/Q9,15
6,D/20
run;
1
title '1.3.3d Read delimited code with multiple delimiters';
2
DATA imports;
3
INFILECARDS dlm='/,';
4
INPUT id importcode $ value;
5
CARDS;
6
14,1,13
7
25/Q9,15
8
6,D/20
9
RUN;
5 Codeblock
DATA STEP Data
Erklärung : Verwendung einer Variablen (`dlmvar`), um die Trennzeichen an die `dlm=`-Option der INFILE-Anweisung zu übergeben, was mehr Flexibilität (z.B. dynamische Parametrisierung) bietet.
Kopiert!
title '1.3.3e Read delimited code with multiple delimiters';
title2 'Using a variable to specify the delimiter';
data imports;
retain dlmvar '/,';
infile cards dlm=dlmvar;
input id importcode $ value;
cards;
/* Données */
run;
1
title '1.3.3e Read delimited code with multiple delimiters';
2
title2 'Using a variable to specify the delimiter';
3
DATA imports;
4
retain dlmvar '/,';
5
INFILECARDS dlm=dlmvar;
6
INPUT id importcode $ value;
7
CARDS;
8
/* Données */
9
RUN;
6 Codeblock
DATA STEP Data
Erklärung : Fortgeschrittene Technik: Lesen des ersten Zeichens der Zeile (`input dlmvar $1. @`), um das spezifische Trennzeichen für diese Zeile zu bestimmen, und anschließendes erneutes Lesen der Zeile (`infile cards dlm=dlmvar`) mit diesem Trennzeichen. (Hinweis: Der ursprüngliche Quellcode enthielt einen Artefakt ' @code_sas_json...', der hier bereinigt wurde).
Kopiert!
title '1.3.3f Read delimited code with multiple delimiters';
title2 'Reading the delimiter during execution';
data imports;
infile cards;
input dlmvar $1. @;
infile cards dlm=dlmvar;
input id importcode $ value;
cards;
,14,1,13
/25/Q9/15
~6~D~20
run;
1
title '1.3.3f Read delimited code with multiple delimiters';
2
title2 'Reading the delimiter during execution';
3
DATA imports;
4
INFILECARDS;
5
INPUT dlmvar $1. @;
6
INFILECARDS dlm=dlmvar;
7
INPUT id importcode $ value;
8
CARDS;
9
,14,1,13
10
/25/Q9/15
11
~6~D~20
12
RUN;
7 Codeblock
DATA STEP Data
Erklärung : Verwendung der Option `DLMSTR` (Delimiter String), die in neueren SAS-Versionen verfügbar ist und es ermöglicht, eine vollständige Zeichenfolge (hier ',,/') als einziges Trennzeichen zu definieren, und nicht eine Liste einzelner Zeichen.
Kopiert!
title '1.3.3g Use a delimiter string';
data imports;
infile cards dlmstr=',,/';
input id importcode $ value;
cards;
14,,/1/,,/13
/* ... */
run;
1
title '1.3.3g Use a delimiter string';
2
DATA imports;
3
INFILECARDS dlmstr=',,/';
4
INPUT id importcode $ value;
5
CARDS;
6
14,,/1/,,/13
7
/* ... */
8
RUN;
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.