2016-03-25 17 views

Antwort

0

Meine Eingabe ist Datensatz so arbeitete für mich:

data dates; 
    set My_data; 
     format date1 DDMMYYP10.; 
     date1 = input (date, anydtdte10.); 

run; 
+1

In diesem Fall hatte Ihre Date-Variable kein numerisches SAS-Datum. Es war eine Zeichenvariable mit einem Textwert, und Sie verwenden die INPUT-Funktion, um diesen Textwert in einen numerischen Datumswert zu konvertieren. – Quentin

0

SAS speichert ein Datum als "SAS-Datum", eine numerische Variable, die die Anzahl der Tage seit dem 1. Januar 1960 angibt. Angenommen, Sie haben ein SAS-Datum (und keine Zeichenvariable, die aussieht ein Datum), sollte es einfach sein, das für diese Variable verwendete Format zu ändern. Beachten Sie, dass dies nicht wirklich den Wert umwandeln, es ändert sich nur das Format verwendet, um den Wert anzuzeigen, wenn es gedruckt wird usw.

36 data want; 
37  mydate="1Mar2016"d; 
38  put mydate=; 
39  format mydate ddmmyyp10.; 
40 run; 

mydate=01.03.2016 

Edit: Ich las Ihre Frage und erkannte, vielleicht nicht wahr ein SAS-Dataset als Eingabe, sondern stattdessen eine Textdatei? Wenn ja, können Sie Daten wie 25.3.2016 mit dem ddmmyy10 informat lesen. Im Folgenden verwendet ddmmyy10 informat im Wert von Textdatei zu lesen, und dann ddmmyyp10 Format mit Punkt als Trenn zu formatieren:

115 data want; 
116 input mydate ddmmyy10.; 
117 put mydate=; 
118 format mydate ddmmyyp10.; 
119 cards; 

mydate=01.03.1960 
NOTE: The data set WORK.WANT has 1 observations and 1 variables. 

121 ; 
122 run; 
2

Es gibt keine „Transformation“ erforderlich, wirklich. Die einzigen zwei Dinge, die Sie benötigen, sind:

  1. Eine richtige informat (in Ihrem Fall sollte die ANYDTDTE10. tun) für SAS angemessen die Daten zu erkennen, auf die Daten
  2. Ein Ausgabeformat zu lesen (Sie fordern DDMMYYP10.), um Daten anzuzeigen, wenn sie korrekt mit den obigen Informationen importiert werden.

Illustration:

data dates; 
    format mydate DDMMYYP10.; 
    input mydate ANYDTDTE10.; 
    datalines; 
25.3.2016 
run; 

proc print;run; 

Ergebnisse:

Obs mydate 
1 25.03.2016 

Natürlich erhalten Sie eine INFILE Aussage eher als ein DATALINES mehr brauchen, wenn Sie externe Daten lesen (was ich davon ausgehen, ist Ihr Fall), aber die Ergebnisse werden gleich sein.

Denken Sie daran, dass die Ausgabeformate nur Formate sind. Sie können sie nach Belieben ändern, ohne die zugrunde liegenden Daten zu beeinflussen. Also der Schlüssel hier ist wirklich die informat.