例如,日期为07/04/1992,今天的日期为2016年11月20日。
我想输出表应该是
07/04/1992
07/04/1993
07/04/1994
07/04/1995
07/04/1996
.
.
.
.
07/04/2016
请帮助我在SAS中获取此信息。
答案 0 :(得分:1)
只需在DO
语句周围使用OUTPUT
循环即可。
假设您有一个带有变量DOB的输入数据集,并且您想要创建新变量DATE
并从DOB到现在每天生成一个观察值。
data want ;
set have ;
do date = dob to today();
output;
end;
format date date9.;
run;
如果要按YEAR或任何其他间隔递增,请使用索引变量和INTNX()
函数。
data want ;
set have ;
do i=0 by 1 until( intnx('year',dob,i+1) > today());
date = intnx('year',dob,i);
output;
end;
format date date9.;
drop i;
run;
答案 1 :(得分:0)
处理日期的最简单方法是将它们视为处理日期并使用日期函数。这个版本避免了闰年的陷阱,但(为简单起见)并没有解决2月29日出生的人。
data want;
format birth_date mmddyy.;
dob = mdy(4,7,1992);
birth_day = day(dob);
birth_month = month(dob);
birth_year = year(dob);
end_year = year(today());
if month(today()) <= month(dob) & day(today()) < day(dob) then
end_year = end_year - 1;
do year = birth_year to end_year;
birth_date = mdy(birth_month,birth_day,year);
output;
end;
run;
答案 2 :(得分:0)
如果你在这个例子中尝试INTNX和SAMEDAY:
data have;
infile cards;
format date1 ddmmyy10.;
input date1 ddmmyy10.;
cards;
07/04/2016
;
run;
data _null_;
format date2 ddmmyy10.;
set have;
date2=intnx('year',date1,-1,"sameday");
put date2;
run;
查看日志中的结果。 然后,您可以循环将“-1”更改为“-2”......依此类推。
希望这有帮助!