2015-08-13 44 views
3

我有以下字符日期格式:SAS不承認的日期格式

"3/1990" 
"4/1990" 
"5/1990" 
... 

我嘗試下面的代碼:

data work.temps; 
    set indata; 
    newdate = input(strip(Date), MMYYSw.); 
    rename newdate = date; 
run; 

我不斷收到以下錯誤meassage:Informat MMYYSW was not found or could not be loaded.

+0

您可以嘗試'MMYYS.'到位MMYYSw.'的'。看看有沒有什麼區別 – ander2ed

+0

不,我得到了同樣的錯誤 – Josh

回答

5

您可能需要使用不同的信息來讀取字符日期,以便SAS可以將它們解釋爲數字(因爲SAS中的日期實際上是數字值),然後用於墊他們爲MMYYS.

這是測試,併爲我工作:

DATA temps; 
FORMAT newdate MMYYS.; 
SET indata; 
newdate = INPUT(COMPRESS('01/'||date),DDMMYY10.); 
RUN; 
+0

這很好:-) – vasja

+0

謝謝。我會說你的答案確實在FORMAT和INFORMAT之間做了很好的區分。 – ander2ed

1

你指什麼是格式,而不是了信息。 您將使用帶PUT功能的格式,對於INPUT,您需要提供信息。

反正我沒有找到直接使用合適了信息,所以你需要做更多的東西:

data work.temps; 
infile cards truncover; 
input Date $10.; 
newdate=MDY(scan(Date,1, '/'), 1, scan(Date,2, '/')); 
cards; 
3/1990 
4/1990 
5/1990 
; 
run; 

掃描需要從字符串第N個字,MDY創建一個從月,日DATE和年份。 上面的代碼給出了本月的第一天。

2

與anydtdte試試這個:

data have; 
    input date $10.; 
    _date=input(compress(date,'""'),anydtdte.); 
    format _date MMYYs7.; 
    cards; 
    "3/1990" 
    "4/1990" 
    "5/1990" 
    ; 
    run;