【问题标题】:sas convert date formatsas转换日期格式
【发布时间】:2015-07-02 06:10:46
【问题描述】:

我有一个这种格式的出生日期变量:15APR1954 我需要设置一个显示当前年龄的新变量 - 就好像今天的日期是 01.01.2011 为了使用 var,如何转换日期? 否则它会给我以下错误:“MDY 函数调用没有足够的参数”。

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;

【问题讨论】:

  • 您是专门寻找截至 1/1/YYYY 的年龄,还是只是一个占位符,可以是一年中的任何日期?

标签: date format sas


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,按你说的解决了。您能否向我介绍有关数组使用的一个很好的解释?我发现了很多,但正如你所说,它没有多大意义,我可能没有完全理解。
  • @user3581800:在答案中添加了指向数组信息的链接。
  • 很好的答案和解释。使用 YRDIF 之前存在一些问题,但正如您使用 9.3 (blogs.sas.com/content/sasdummy/2011/07/12/…) 中引入的“AGE”选项所展示的那样,它现在可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多