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 ループを使用したいのですが、各変数の名前の最後の部分を _Ask または _Bid と比較するよう SAS に指示する方法がわかりません。

あとがき。最後の部分 (_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 に答える