【问题标题】: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 关键字单独设置值。应该这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-11
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 2022-07-24
        • 2019-06-15
        • 1970-01-01
        相关资源
        最近更新 更多