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版本是什么?