发出输入sas日期作为datalines

Hei*_*erg 3 sas

我有以下代码.虽然我已进入30jun1983,但它被保存为30/jun/2020.并且只有在卡片中的日期值之间有两个空格时才会读取,如果只有一个空格,则它会将第二个值读取为缺失.

DATA DIFFERENCE;
infile cards dlm=',' dsd;
INPUT  DATE1 DATE9. Dt2 DATE9.;
FORMAT DATE1 DDMMYY10. Dt2 DDMMYY10.;
DIFFERENCE=YRDIF(DATE1,Dt2,'ACT/ACT');
DIFFERENCE=ROUND(DIFFERENCE);
CARDS;
11MAY2009  30jun1983
;
RUN;
Run Code Online (Sandbox Code Playgroud)

All*_*owe 8

您需要在输入语句中使用冒号(表示INformats),并在数据表中使用逗号(您将逗号指定为DLM - 分隔符):

DATA DIFFERENCE;
infile cards dlm=',' dsd;
INPUT  DATE1 :DATE9. Dt2 :DATE9.;
FORMAT DATE1 DDMMYY10. Dt2 DDMMYY10.;
DIFFERENCE=YRDIF(DATE1,Dt2,'ACT/ACT');
DIFFERENCE=ROUND(DIFFERENCE);
CARDS;
11MAY2009,30jun1983
;
RUN;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这帮了很多忙. (2认同)