我有以下代码。虽然我输入了 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;

最佳答案

您的输入语句中需要冒号(表示 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;

关于sas - 问题输入 sas 日期作为数据线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24606235/

10-12 18:16