SAS DO L OOP с указанием c дат - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу создать набор данных, в котором я хочу сохранить только 5 указанных c дат. Таким образом, мой & date 31mar2020 и & enddate 31mar2025, и я хочу сохранять 31mar каждый год до 2025 года.

С моим кодом ниже он создает даты на каждый день до 31mar2025 и это очень много, поэтому я хочу сохранить только 5 Speci c даты.

Как я могу это сделать?

Спасибо

  DATA LOOP;FORMAT ROLL_BASE_DT DATE9.;DO  ROLL_BASE_DT =&DATE TO &ENDdate;OUTPUT;END;RUN;

enter code here

enter code here

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Вы можете использовать запятые в операторе DO для перечисления нескольких значений.

do date='31mar2021'd,'31mar2022'd,'31mar2023'd,'31mar2024'd,'31mar2025'd;
  ...
end;

Вместо этого вы можете l oop вместо значения YEAR.

do year=2021 to 2025;
   date=mdy(3,31,year);
  ...
end;

Вы можете использовать INTNX () чтобы увеличить дату на ГОД. Вы можете использовать INTCK (), чтобы выяснить, сколько раз запустить l oop.

do index=0 to intck('year',&DATE,&ENDdate);
  date=intnx('year',&date,index,'s');
  ...
end;
0 голосов
/ 22 апреля 2020

Если вам нужны только 5 дат, вы можете использовать ввод карт (я знаю об этом, но никогда не использовал его лично).

В качестве альтернативы, вместо использования al oop, просто установите значения индивидуально с выходным ключевым словом после каждого задания значения. Это должно сделать это.

...