1
我正在嘗試使用CATS函數(組合日期,月份和年份變量)創建日期變量。 當月份,日期或年份變量丟失時,我總是收到LOG錯誤。將字符M/D/Y字段轉換爲其中可能缺少一個或多個字符的日期
的LOG看起來像這樣...
NOTE: Invalid argument to function INPUT at line 41 column 12.
USUBJID=XYZ-01-002 event_seq=2 estd=31 estm=JAN esty=2013 eend=. eenm=FEB eeny=2013
EVSTDT=31-JAN-2013 EVENDT=. _ERROR_=1 _N_=3
這裏是我的代碼...
filename event URL "http://www.stat.wmich.edu/wang/680/data/event.csv";
RUN;
Data events;
Infile event delimiter=',' dsd firstobs=1;
Informat
USUBJID $10. event_seq 2. estd $UPCASE2.
estm $UPCASE3. esty $UPCASE4. eend $UPCASE2.
eenm $UPCASE3. eeny $UPCASE4.;
Input USUBJID event_seq estd estm esty eend eenm eeny;
If estd = "UN" then estd = '.'; If eend = "UN" then eend = '.';
If eeny = "UNK" then eeny = '.'; If esty = "UNK" then esty = '.';
If esty = " " then esty = '.'; If eeny = " " then eeny = '.';
If eend = " " then eend = '.'; If estd = " " then estd = '.';
If estm = " " then estm = '.'; If eenm = " " then eenm = '.';
Label
USUBJID = "Subject ID" event_seq = "Event Sequence"
esty = "Estimated Start Year" estd = "Estimated Start Day"
estm = "Estimated Start Month" eend = "Estimated End Day"
eenm = "Estimated End Month" eeny = "Estimated End Year";
RUN;
PROC SORT Data = events Out=ev_raw;
BY USUBJID event_seq;
RUN;
DATA event_log;
Set ev_raw;
EVSTDT = input(cat(estd, estm, esty), date9.);
EVENDT = input(cat(eend, eenm, eeny), date9.);
Format
EVSTDT EVENDT date11.;
RUN;
謝謝您的幫助!
我想要做的是分配一個缺失值「」(空白),或者至少「。」。或「NA」。我知道SAS可能會遇到這個問題,但我不得不使用字符格式?例如... EVSTDT =輸入(catx(「/」,estd,estm,esty),char11。); – k6adams 2014-09-29 19:19:25
歡迎您將其存儲爲字符變量,但您目前沒有這樣做:將它輸入到日期格式的數字中,該數字不能包含缺少組件值的這種概念。如果你想將它作爲字符存儲,只需使用'CATS'或'CATX'並且不要使用'input'(即'EVSTDT = catx('/',estd,estm,esty);'和更早的定義'EVSTDT'的長度爲11)。 – Joe 2014-09-29 19:21:00
at Joe ...我的編程知識大多侷限於SAS,R和LaTeX。有沒有可能指引我的地方,以便我知道如何妥善發佈問題?謝謝你的幫助。 – k6adams 2014-09-29 19:25:30