将变量值传递给数组

pass variable value to array

数据集 have 有一些前缀为 Dex 的列。但我不知道有多少列完全带有该前缀。

我想创建一个数组,其值等于这些列。

data want;
set have;
array Dex[100];
for i = 1 to 100;
[assign values]
end;
run;

有没有办法在不知道这些列的名称的情况下执行此操作?

是的,您可以定义数组,例如:

array vars Dex:;
do i=1 to dim(vars);
[assign values]
end;
run;

dictionary.columns找出前缀为dex

columns的个数

/示例数据集/

 data have;
    dex_random1=1;
    dex_1=2;
    dex_3=4;
    dex_dex_random=2;
  run;

    proc sql;
    select count(*) into: Number_of_vars from dictionary.columns where 
    upcase(libname)="WORK" and upcase(memname)="HAVE" and upcase(name) like "DEX%";
    select name into: All_vars separated by " " from dictionary.columns where 
    upcase(libname)="WORK" and upcase(memname)="HAVE" and upcase(name) like "DEX%";
    quit;

    data want(drop=i);
    set have;
    array dex[&Number_of_vars.] &All_vars.  ;
    do i=1 to &Number_of_vars.;
    dex[i]=1;
    end;
    run;