sas转换日期格式

sas convert date format

我有一个出生日期的变量,格式为:15APR1954 我需要设置一个显示当前年龄的新变量——就好像今天的日期是 01.01.2011 为了使用 var,我该如何转换日期? 否则会出现以下错误:"The MDY function call does not have enough arguments".

data DAT2;set DAT1;
array BD{*} birth_date;
Curage=0;
do i=1 to dim(BD);
Curage+(MDY(01012011)-(birth_date));
end;
drop i;
run;

计算年龄的最佳方法是使用 SAS 内置函数 yrdif()

data dat2;
    set dat1;
    curage = yrdif(birth_date, today(), 'AGE');
run;

函数today()returns今天的日期。如果您想要某个日期的年龄,例如2011-01-01 就像在您的示例中一样,您可以将 today() 替换为 '01JAN2011'dmdy(1, 1, 2011)。 (请注意,mdy() 的语法不正确。)

我还会注意到您的数组方法没有多大意义;您正在定义一个只有一个元素的数组,因此您最好只对该值执行操作。当您希望对 2 个或更多变量的 group 执行相同的操作时,数组很有用。有关 SAS 中数组处理的详细信息,请参阅 this section of the documentation