1

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

AAYAN_KK_Equity_Ask
AAYAN_KK_Equity_Bid
AAYAN_KK_Equity_Close
AAYAN_KK_Equity_Date
AAYAN_KK_Equity_Volume
AAYANRE_KK_Equity_Ask
AAYANRE_KK_Equity_Bid
AAYANRE_KK_Equity_Close
AAYANRE_KK_Equity_Date

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

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

4

1 回答 1

3

您可能想要查询 sashelp.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;
于 2014-11-11T01:17:55.347 回答