我有一个包含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。有什么建议吗?
答案 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
更好的东西。