2016-04-05 6 views
0

Ich arbeite nie in sas vor, und jetzt erben ich einen sas-Code, ich habe Probleme zu ändern. Ich habe eine Daten Aussage sas, die wie folgt aussieht:Hinzufügen von sas Datenfeld in Datenanweisung

data newdata; 

length field1 $12. 
    field2 8. 
    field3 $7. 
; 
format field1 16.; 

run; 

ich ein Datenfeld am Ende hinzufügen müssen, damit ich

proc append base = newdata data = /*something*/ 

verwenden Wie würde ich über das tun dies gehen? das Datenfeld ist in diesem Format

ddMMMyy e.g. 02MAR15 

I

Daten newdata versucht haben;

length field1 $12. 
    field2 8. 
    field3 $7. 
    field4 date9. 
; 
format field1 16.; 

run; 

und auch

data newdata; 
format dob date9.; 
length field1 $12. 
    field2 8. 
    field3 $7. 
    field4 dob ddmmmyy10. 
; 
format field1 16.; 

run; 

Keine scheint zu funktionieren. Ich kann Zeichenfolge als Datentyp für Feld4 angeben, aber es würde während des Anhängen fehlschlagen.

Antwort

3

Ihr Problem hier ist, dass length und format zwei verschiedene Dinge sind. date9. ist ein Format, keine Länge; numerische Variablen haben die Länge 3 bis 8, aber nichts darüber hinaus.

Wenn ich verstehe, was Sie fragen, haben Sie ein Dataset mit 3 Spalten und ein anderes Dataset mit vier Spalten, und möchten das letztere an ersteres anhängen.

Wenn dies der Fall ist, verwenden Sie am einfachsten die if 0 then set, die die Struktur des Einstellungsdatensatzes übernimmt und sie kopiert, ohne ihre Daten zu kopieren.

data have; 
    length field1 $12. 
    field2 8. 
    field3 $7. 
    ; 

run; 


data have2; 
    length field1 $12. 
    field2 8. 
    field3 $7. 
    field4 8. 
    ; 
    format field4 date9.; 
run; 

data have; 
    if 0 then set have2; *copies structure of have2 onto this data step PDV; 
    set have; 
run; 

proc append base=have data=have2; 
run; 

ehrlich Obwohl Sie nur

data want; 
    set have have2; 
run; 

tun könnten Da Sie gehen alle have oder so aufzuarbeiten.

+0

würde ich für Sie jetzt Mariah Careys Helden singen !! – user2773013

0

warum Option nicht nur die Gewalt:

proc append base= newdata 
      data= something force; 
run;