如何将名称为主干+后缀的 SAS 数据集读取到 IML 中?词干作为 SAS 宏变量给出,我打算使用的后缀位于 IML 中的字符串向量中。
在 R 中我会使用
suffix<-c('s1','s2')
for (s in suffix){
data<-eval(as.name(paste(stem,s,sep='')))
}
如果我有第一个数据集的代码,我可以进行循环。我试过:
proc iml;
suffices = {'s1','s2'};
call symput('suffix',suffices[1]);
use &stem.&suffix.;
问题是,如果在 do 循环中(当我循环名称时我需要这个),调用 symput 并不真正起作用。Here我找到了 symget,但在使用 &stem.symget('suffix') 的情况下并没有取得成果。
还有其他想法吗?
编辑:我发现以下相当不优雅的解决方案:
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;
但我仍然不认为这是人们应该采取的工作方式。
我能想到的最简单的方法是使用一些非 IML 语法。例如,PROC SQL 可以生成宏变量列表。
%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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)