Format 如何在SAS中将日期(带字母)格式化为数字?

Format 如何在SAS中将日期(带字母)格式化为数字?,format,sas,Format,Sas,我有一个看起来像这样的数据集: Name birth birth_day death death_day Don 1913 02-Mar 1998 01-Nov Jack 1924 04-Dec 1970 13-Sep 我想计算人们的年龄,但我不知道如何将出生日和死亡日中的条目格式化为数字,以便我可以从死亡日中减去他们的生日来计算他们的年龄。我的教授建议使用dmy函数,我就这么做了 x=dmy(day(birt

我有一个看起来像这样的数据集:

    Name  birth  birth_day  death  death_day   
    Don   1913   02-Mar     1998   01-Nov
    Jack  1924   04-Dec     1970   13-Sep
我想计算人们的年龄,但我不知道如何将
出生日
死亡日
中的条目格式化为数字,以便我可以从死亡日中减去他们的生日来计算他们的年龄。我的教授建议使用
dmy
函数,我就这么做了

    x=dmy(day(birth_day), month(birth_day), birth);
然而,这并没有按计划进行。我如何着手解决这个问题

回应漫谈:

     data _null_;
     set mydata;

     death_date = input(cats(death_day,'-', death), date11.);
     birth_date = input(cats(birth_day,'-', birth), date11.);
     format death_date birth_date date11. age 4.1;

     age = yrdif(birth_date, death_date,'AGE');  ** The 'AGE' part only works in SAS 9.3+!!;
     put death_date= birth_date= age=;
     run;

我尝试了类似的方法,但是在
format death\u date birth\u date11行中出现了一个错误。年龄4.1岁显示错误48-59:找不到或无法加载格式$DATE。

以下示例模拟您的第一行:-

   data example;
     Name = "Don";
     birth_day = "02-Mar";
     birth = "1913";
     death_day = "01-Nov";
     death = "1998";
   run;

   data example_with_age;
     set example;
     length death_date birth_date 5 age 3;
     format death_date birth_date date11. age 4.1;

     death_date = input(cats(death_day,'-', death), date11.);
     birth_date = input(cats(birth_day,'-', birth), date11.);

     age = yrdif(birth_date, death_date,'AGE');  ** The 'AGE' part only works in SAS 9.3+!!;
   run;
我假设你的出生和死亡变量是性格。如果它们是数字,则应在
input
行中用
put
语句包围它们


我一直懒于使用新版SAS中的一项功能来计算年龄——当使用完整日期时,计算年龄是一件令人惊讶的麻烦事。如果您使用的是较旧的SAS版本,请在评论中告诉我,我将添加较旧的计算年龄的方法。

感谢您的回复。因此,如果我想在我的示例数据集中计算Don和Jack的年龄(即,我想计算多个年龄),我会怎么做?我在我的原始帖子中添加了更多细节,所以如果你能参考上面的内容,那就太好了@ramblesI修改了代码,将示例与“解决方案”分开。如果在运行第二个数据步骤时仍然出现错误,请告诉我。另外,您使用的SAS版本是什么?