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'd
或 mdy(1, 1, 2011)
。 (请注意,mdy()
的语法不正确。)
我还会注意到您的数组方法没有多大意义;您正在定义一个只有一个元素的数组,因此您最好只对该值执行操作。当您希望对 2 个或更多变量的 group 执行相同的操作时,数组很有用。有关 SAS 中数组处理的详细信息,请参阅 this section of the documentation。
我有一个出生日期的变量,格式为: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'd
或 mdy(1, 1, 2011)
。 (请注意,mdy()
的语法不正确。)
我还会注意到您的数组方法没有多大意义;您正在定义一个只有一个元素的数组,因此您最好只对该值执行操作。当您希望对 2 个或更多变量的 group 执行相同的操作时,数组很有用。有关 SAS 中数组处理的详细信息,请参阅 this section of the documentation。