首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历SAS-IML中的名称?

循环遍历SAS-IML中的名称?
EN

Stack Overflow用户
提问于 2013-07-18 15:04:03
回答 2查看 833关注 0票数 2

如何将名为stem+suffix的SAS数据集读入IML?词干是作为SAS宏变量给出的,我打算使用的足够内容在IML中的字符串向量中。

在R中,我会使用

代码语言:javascript
复制
suffix<-c('s1','s2')
for (s in suffix){
   data<-eval(as.name(paste(stem,s,sep='')))
}

如果我有第一个数据集的代码,我就可以进行循环。我试过了:

代码语言:javascript
复制
proc iml;
suffices = {'s1','s2'};
call symput('suffix',suffices[1]);
use &stem.&suffix.;

问题是,如果在do循环中(我在循环名称时需要这样做),调用symput并不能真正起作用。我发现了Here,但在使用后缀(‘&stem.symget’)的上下文中并不是很有效。

还有其他想法吗?

编辑:我发现了以下不太优雅的解决方案:

代码语言:javascript
复制
proc iml;
%global suff;
suffix={'s1','s2','s3'};
%do ii = 1 %to 3;
call symput('suff',suffix[&ii.]);
<do stuff based on the suffix>
%end;

然而,我不认为这是一个人应该做的事情。

EN

回答 2

Stack Overflow用户

发布于 2013-07-18 21:46:36

我能想到的最简单的方法就是使用一些非IML语法。例如,PROC SQL可以生成宏变量列表。

代码语言:javascript
复制
%let stem=class_;
data class_s1 class_s2;
set sashelp.class;
run;

data suffices;
input suffix $;
datalines;
s1
s2
;;;;
run;

%macro use_suffix(suffix=);
use &stem.&suffix.;
read all into &stem.&suffix.;
print &stem.&suffix.;
%mend use_suffix;

proc sql;
select cats('%use_suffix(suffix=',suffix,')') into :suffixlist separated by ' ' from suffices;
quit;

proc iml;
&suffixlist;
quit;
票数 1
EN

Stack Overflow用户

发布于 2013-07-29 18:41:42

如果您有SASIML12.1,只需使用字符串连接来构造数据集名称,然后将名称括起来,如博客文章"Read data sets that are specified in an array“中所述。

在循环中使用宏变量时要小心。请参阅文章"Macros and loops in the SAS/IML language“中的技巧

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17716726

复制
相关文章

相似问题

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