SAS DO LOOP dengan tanggal tertentu

Saya ingin membuat kumpulan data di mana saya hanya ingin menyimpan 5 tanggal tertentu. Jadi &tanggal saya adalah 31mar2020 dan &tanggal akhir adalah 31mar2025 dan saya hanya ingin mempertahankan 31mar setiap tahun hingga tahun 2025.

Dengan kode saya di bawah ini, ini membuat tanggal untuk setiap hari hingga 31 Maret 2025 dan itu terlalu banyak, jadi saya hanya ingin menyimpan 5 tanggal tertentu.

Bagaimana saya bisa melakukan itu?

Terima kasih

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

enter code here

enter code here

person Mikael Holmkvist    schedule 22.04.2020    source sumber


Jawaban (2)


Anda dapat menggunakan koma dalam pernyataan DO untuk mencantumkan beberapa nilai.

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

Anda dapat mengulang nilai YEAR sebagai gantinya.

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

Anda dapat menggunakan INTNX() untuk menambah tanggal berdasarkan TAHUN. Anda dapat menggunakan INTCK() untuk mengetahui berapa kali menjalankan loop.

do index=0 to intck('year',&DATE,&ENDdate);
  date=intnx('year',&date,index,'s');
  ...
end;
person Tom    schedule 22.04.2020

Jika hanya 5 tanggal yang Anda inginkan, Anda dapat menggunakan input kartu (saya mengetahuinya tetapi belum pernah menggunakannya secara pribadi).

Alternatifnya, daripada menggunakan perulangan, cukup atur nilainya satu per satu dengan kata kunci output setiap kali Anda menetapkan nilainya. Itu seharusnya berhasil.

person Laebrye    schedule 22.04.2020