通过根据SAS中变量名称中的关键字选择变量来子集数据集



我希望有人能帮忙。我有一个导入SAS的大型数据集,其中包含数千个变量。我想通过提取名称中有特定关键字的变量来创建一个新的数据集。例如,以下变量在我的数据集中:

AAYAN_KK_Equity_Aask
AAYAN_KK_Equity_Bid
AAYAN_KK_Equity_Close
AAYAN_KK_离职日期
AAYAN_KK_Equity_Volume
AAYANRE_KK_Equity_Aask
AAYANRE_KK_Equity_Bid
AAYANRE_KK_Equity_Close
AAYANRE_KK_Equity_Date

我想提取以_Ask和_Bid结尾的变量,而不知道变量名称的其余部分。有办法做到这一点吗?我想尝试使用do循环,但不知道如何指示SAS将每个变量名称的最后部分与_Ask或_Bid进行比较。

后记。我想为每个集合创建一个新的变量,该变量以变量的全名开头,但最后一部分除外(即_Ask或_Bid)。我可以在使用赋值语句时做到这一点吗?

您可能想要查询保存数据集元数据的sashhelp.vtable。假设您的数据在WORK库中,并被称为TABLE,下面将创建一个以ASK结尾的变量列表。

proc sql;
select name into :varlist separated by " "
from sashelp.vcolumn
where libname="WORK" and memname="TABLE" and upcase(name) like '%_ASK';
quit;
*To rename the variables with MID generate a rename statement;
proc sql;
    select catx("=", name, tranwrd(upcase(name), "_ASK", "_MID"))
    into :rename_list separated by " "
    from sashelp.vcolumn
    where libname="WORK" and memname="TABLE" and upcase(name) like '%_ASK';
quit;
%put &rename_list;

data want_ask;
set work.table
 (keep = &varlist);
 rename &rename_list;
run;

最新更新