Подмножество набора данных путем выбора переменных на основе ключевых слов в их имени в SAS

Я надеюсь, что кто-то может помочь. У меня есть большой набор данных, импортированный в 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). Могу ли я сделать это с помощью оператора присваивания?

1 ответ

Вы, вероятно, захотите запросить 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;
Другие вопросы по тегам