[英]How to use cycles in sas macro data step
我需要在寫入數據步驟的sas宏中使用循環
我有一個應該工作的代碼,但事實並非如此。 我該如何解決?
%macro ci;
data
%do i=1 %to 3;
_z%sysfunc(putn(%eval(&i),z2.)) ;
%end;
;
set _06;
%do i=1 %to 3;
if num="%sysfunc(putn(%eval(&i),z2.))" then output _z%sysfunc(putn(%eval(&i),z2.));
%end;
run;
%mend;
%ci;
我想獲得以下輸出:
data
_z01
_z02
_z03;
set _06 ;
if num="01" then output _z01;
if num="02" then output _z02;
if num="03" then output _z03;
run;
你很近。 你只是額外的;
在你的第一個循環中。
你需要改變:
data
%do i=1 %to 3;
_z%sysfunc(putn(%eval(&i),z2.)) ;
%end;
;
至:
data
%do i=1 %to 3;
_z%sysfunc(putn(%eval(&i),z2.))
%end;
;
添加option mprint;
代碼的開頭會顯示從宏語句生成的代碼,並幫助您調試它。
怎么樣如果您使用更簡單的方法而不是使用將數字轉換為字符
data _06;
num='01';
output;
num='02';
output;
num='03';
output;
run;
%macro ci;
data
%do i=1 %to 3;
_z0&i
%end;
;
set _06;
%do i=1 %to 3;
if num="0&i" then output _z0&i;
%end;
run;
%mend;
%ci;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.