【问题标题】:SAS DO LOOP with specific dates具有特定日期的 SAS DO LOOP
【发布时间】:2020-04-22 09:48:02
【问题描述】:
我想创建一个数据集,我只想保留 5 个特定日期。
所以我的 &date 是 31mar2020,&enddate 是 31mar2025,我只想每年保持 31mar 到 2025 年。
使用我下面的代码,它会为每天 31mar2025 之前创建日期,仅此而已,所以我只想保留 5 个特定日期。
我该怎么做?
谢谢
DATA LOOP;FORMAT ROLL_BASE_DT DATE9.;DO ROLL_BASE_DT =&DATE TO &ENDdate;OUTPUT;END;RUN;
enter code here
enter code here
【问题讨论】:
标签:
loops
sas
nonsequential
【解决方案1】:
您可以在 DO 语句中使用逗号来列出多个值。
do date='31mar2021'd,'31mar2022'd,'31mar2023'd,'31mar2024'd,'31mar2025'd;
...
end;
您可以改为遍历 YEAR 值。
do year=2021 to 2025;
date=mdy(3,31,year);
...
end;
您可以使用 INTNX() 将日期递增 YEAR。您可以使用 INTCK() 计算循环运行的次数。
do index=0 to intck('year',&DATE,&ENDdate);
date=intnx('year',&date,index,'s');
...
end;
【解决方案2】:
如果只是你想要的 5 个日期,你可以使用卡片输入(我知道但从未亲自使用过)。
或者,不是使用循环,而是在每次设置值后使用 output 关键字单独设置值。应该这样做。