我正在尝试使用CATS功能创建日期变量(组合日,月和年变量)。 当月,日或年变量丢失时,我一直收到LOG错误。
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;
感谢您的帮助!
答案 0 :(得分:3)
当您输入缺少月,日或年的日期时,您期望得到什么?如果我告诉你一个日期是" 2001年1月",并且你被迫指向日历上的特定方格,你指的是哪个方格?
你需要有一些代码来处理这个问题。有时您可能会选择默认值为day = 1,当剩下一天时,默认月份= 1,当月份被省略时(强制日= 1,因为它不太具体)。如果遗漏了一年,我不知道你做了什么,除了将整个日期设置为遗漏,除非在你的特定用例中年份不是很重要。其他人可能会将当天默认为15或月份为6或7(因为这是可能值的平均值)。如果缺少任何组件,其他人只需将日期设置为缺失。
您选择做什么取决于您的数据和您的需求,但您必须向SAS提供一些工作;它不会为你做出决定。