Loops 如何在SAS中的两个日期之间每天创建额外的行?
我正在寻找SAS代码为两个日期之间的每一天创建“新”行。 例如,我的原始数据集包含:Loops 如何在SAS中的两个日期之间每天创建额外的行?,loops,date,sas,transform,Loops,Date,Sas,Transform,我正在寻找SAS代码为两个日期之间的每一天创建“新”行。 例如,我的原始数据集包含: Num. StartDate EndDate Tag 5 13JUN2017 25NOV2017 1 6 1JAN2017 4MAR2017 5 ... 等等,我需要用 Num. Day TAG 5 13JUN2017 1 5 14JUN2017 1 ... 5 25NOV2017 1 6 1J
Num. StartDate EndDate Tag
5 13JUN2017 25NOV2017 1
6 1JAN2017 4MAR2017 5
...
等等,我需要用
Num. Day TAG
5 13JUN2017 1
5 14JUN2017 1
...
5 25NOV2017 1
6 1JAN2017 5
...
6 4MAR2017 5
...
有人能帮忙吗?
提前谢谢 尝试使用do while
data have;
input num startdate enddate tag;
informat startdate date9. enddate date9.;
format startdate date9. enddate date9.;
cards;
5 13jun2017 25nov2017 1
6 01jan2017 04mar2017 5
;
run;
data want;
set have;
format next_due_date date9.;
next_due_date = startdate;
do while (enddate > next_due_date);
next_due_date = intnx("day",next_due_date,1);
output;
end;
run;
如果有任何疑问,请告诉我。已经找到了!把这个发现放在下面的答案中,并接受它。那么,我们就不会在期待有人仍然需要帮助的情况下进入这个问题。请这样做。其他寻找它的人可能也会感谢您。因为SAS将日期存储为整数,所以您只需使用一个简单的
do next\u due\u date=startdate to enddate代码>循环。但是,如果您想按日期间隔而不是按天递增,则do-while循环非常有用。如果我想按日期间隔而不是按天递增,即使这样,我也可以通过简单地给出“by”语句来使用“do”。“do&do-while”可用于两个查询(按天递增以及按时间间隔递增)。是吗?@pinegulf很乐意帮忙!!