SAS从年龄开始寻找出生日期

时间:2016-04-19 15:25:19

标签: date sas

我有一个包含VisitDate和AgeAtVisit的数据集。我需要DateOfBirth。

我知道如果我从VisitDate和DateOfBirth开始,我可以从中计算AgeAtVisit       AgeAtVisit = intck('year',DateOfBirth,VisitDate);

但是我不确定如何倒退。

我的数据如下:

   ID       VisitDate        AgeAtVisit
    1         01/01/2000        73.25
    2         03//03/2000       74.22
    3         06/06/2006       65.30

我怎样才能从这个出生到出生日期?

我想过尝试手动做一个像

这样的等式
  age = (Date of visit -date of birth)/365.25

但我不能重新安排,因为我无法从访问日期中减去年龄。我不能使用YearDiff,因为我只有一个日期。我不认为我可以使用intck。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你绝对可以做你的建议。日期是自1960年1月1日以来的天数,因此您可以添加/减少天数而不受惩罚。考虑到闰年的不完美(2000年是闰年,幸运的是,除非你有116个人,你可能还可以),你可能会在一生中度过一天左右。

data have;
input ID       VisitDate  :mmddyy10. AgeAtVisit;
format visitDate date9.;
datalines;
    1         01/01/2000        73.25
    2         03/03/2000       74.22
    3         06/06/2006       65.30
;;;;
run;

data want;
  set have;
  dateOfBirth = visitDate - 365.25*ageAtVisit;
  format dateOfBirth date9.;
run;

如果你确实需要完美的准确度,那么你需要比AgeAtVisit更好的东西。