首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历datastep中的宏变量

循环遍历datastep中的宏变量
EN

Stack Overflow用户
提问于 2019-04-29 18:54:44
回答 2查看 141关注 0票数 0

我需要在数据步骤中循环一些宏变量,我已经尝试定义宏变量,并在数据步骤中动态构建它们,如下所示

代码语言:javascript
复制
DATA _NULL_;
 call symputx('_rbank_1',put(001,z3.));
 call symputx('_rwebhost_1','company1.myhost.com');

 call symputx('_rbank_2',put(008,z3.));
 call symputx('_rwebhost_2','company2.myhost.com');

 call symputx('_rbank_3',put(008,z3.));
 call symputx('_rwebhost_3','company3.myhost.com');

RUN;

%let _rbank_1 = &_rbank_1;
%let _rwebhost_1 = &_rwebhost_1;
%let _rbank_2 = &_rbank_2;
%let _rwebhost_2 = &_rwebhost_2;
%let _rbank_3 = &_rbank_3;
%let _rwebhost_3 = &_rwebhost_3;


data test;
 do cnt=1 to 3;
  macroString=compress("&_rwebhost_"||cnt);
  marcroValue=macroString; 
 end;
run;

但是macroValue的输出是"&_rwebhost_3“,我需要它是值而不是名称。

我可以在宏中做到这一点,但我真的需要在数据步骤中使用它。通常,在其他编程语言中,我会定义一个哈希表,但在sas datastep中,这似乎没有那么简单。

EN

回答 2

Stack Overflow用户

发布于 2019-04-29 20:21:08

symput的对立面是symget

代码语言:javascript
复制
data test;
 do cnt=1 to 3;
  macroString=symgetc(cats("_rwebhost_",put(cnt,BEST32.)));
  marcroValue=symgetn(cats("_rbank_",put(cnt,BEST32.)));
  output; 
 end;
run;
票数 1
EN

Stack Overflow用户

发布于 2019-04-29 20:47:49

使用SYMGET()函数检索其名称事先未知的宏变量的值。

代码语言:javascript
复制
%let _rbank_1 = 001;
%let _rwebhost_1 = company1.myhost.com;
%let _rbank_2 = 008;
%let _rwebhost_2 = company2.myhost.com;
%let _rbank_3 = 008;
%let _rwebhost_3 = company3.myhost.com;

data test;
 do cnt=1 to 3;
   bank = symget(cats('_rbank_',cnt));
   webhost= symget(cats('_rwebhost_',cnt));
   put cnt= bank= webhost= ;
 end;
run;

但是,如果您需要数据集变量中的值,则将它们存储在数据集中,而不是宏变量中。例如,您可以在SET语句上使用POINT=选项来选择要读取的观察值。

代码语言:javascript
复制
data company ;
  input bank $3. webhost $20. ;
cards;
001 company1.myhost.com
008 company2.myhost.com
008 company3.myhost.com
;

data test;
  do cnt=1 to 3;
    set company point=cnt;
    put cnt= bank= webhost= ;
  end;
run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55901873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档