簡體   English   中英

如何在sas宏數據步驟中使用循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM