如何将sas SQL substr函数应用于所有列,在一行中对每个变量执行完全相同的substr



A1、A2、A3、A4、A5。。。(这些是列名或变量(

我想使用substr函数根据关联的数字来选择所有这些。

类似于;输入子字符串(变量.2(

我很确定这是可以做到的,但我不确定如何做到。知道吗?

我希望能够选择字母后面的数字。

我想订购5、4、3、2、1因为每周我都会得到更多的专栏,A1变成A2,新的一周变成A1,然后A5变成A6。

所以我想颠倒他们的顺序。我想做:按输入substr(变量.2(排序,但我不知道如何使其工作。

最佳,H.

您可以使用字典表、proc sql:into语句来构建SQL select语句。对于本例,我们假设您的数据集名称为HAVE。我们将从dictionary.columns中选择HAVE中以A开头的所有变量来构建SQL语句:

proc sql noprint;
select name
into :vars separated by ', '
from dictionary.columns
where     memname = 'HAVE'
AND name LIKE 'AA_%A_BB'
order by input(compress(name,,'KD'), 8.) desc
;
quit;

这将创建宏变量&vars,它看起来像这样:

AA_A5_BB, AA_A4_BB, AA_A3_BB, AA_A2_BB, AA_A1_BB

您可以将该权限传递到SQL select语句中:

proc sql;
create table want as
select &vars
from have
;
quit;

最新更新