2017-10-10 1 views
0

Ich versuche zu verstehen, wie schlecht formatierte Daten in SAS gelesen werden. Unten ist der Ausschnitt und der Anfang meines Versuchs. Ich habe auch versucht, eine if-Anweisung zu machen, war mir aber nicht sicher, wie ich für jede Zeile ein Format deklariere. zum Beispiel:schlecht formatierte Daten lesen

if _N_ then [format for this line goes here];

data prob2; 
length name $ 8 ; 
infile rawdata(Group2.txt) truncover; 
input Code Name X Y Z; 
proc print data=prob2; 
run; 

Beispieldaten:

10 Arnold 123 21 333 
20 Barbara 11 387 
30 176 265 3876 
Daniel 154 39876 
50 Elmo 176 256 33 
60 Fifi 198 298 
70 Gizmo 288 354 
80 376 
90 Isaac 100 267 322 

erwartete Ausgabe:

Code Name  X Y  Z 
----------------------------- 
10 | Arnold | 123 | 21 | 333 
20 | Barbara| 11 | 387| . 
30 |  . | 176| 265| 3876 
. | Daniel | 154| 39| 876 
50 | Elmo | 176| 256| 33 
60 | Fifi | 198| 298| . 
70 | Gizmo | 288| 354| . 
80 | . | 376| . | . 
90 | Isaac | 100| 267| 322 
----------------------------- 
+0

Bitte nach, was Sie versucht haben, als auch, was Sie als Ausgang erwarten. Zum Beispiel, was sollte die vorletzte Zeile sein? Können Sie davon ausgehen, dass ein Leerzeichen das Trennzeichen ist? – Reeza

+0

Ich habe jetzt beide gepostet. Was ich versuchte, ist der Ausschnitt über den Datenlinien, und der letzte Block ist die erwartete Ausgabe. – StillLearningToCode

+0

Probieren Sie infile rawdata (Group2.txt) delimter = '' dsd; ' – david25272

Antwort

0

david25272 Solution arbeitet.

option missing=.; 

data begin; 
    INFILE DATALINES DLM=' ' dsd; 
    input Code Name $ X Y Z; 
    datalines; 
10 Arnold 123 21 333 
20 Barbara 11 387 
30 176 265 3876 
Daniel 154 39876 
50 Elmo 176 256 33 
60 Fifi 198 298 
70 Gizmo 288 354 
80 376 
90 Isaac 100 267 322 
; 
run; 

Produziert

Code Name X Y Z 
10 Arnold 123 21 333 
20 Barbara 11 387 . 
30  176 265 3876 
. Daniel 154 . 39876 
50 Elmo 176 256 33 
60 Fifi 198 298 . 
70 Gizmo 288 354 . 
80  376 . . 
90 Isaac 100 267 322 

Dies ist jedoch Raum empfindlich und wenn möglich, würde ich vorschlagen, ein Trennzeichen auf Ihr in Daten hinzufügen. Ziemlich einfach mit einfacher Ersatzfunktion.

Edit: Gefunden ein wunderbares Papier auf Eingabe von Daten: http://www2.sas.com/proceedings/sugi29/253-29.pdf

Verwandte Themen