Извлечь переменные с условием соответствия в SAS [duplicate]

1
задан DR_M 11 November 2014 в 01:17
поделиться

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;
3
ответ дан Reeza 20 August 2018 в 12:58
поделиться
  • 1
    Спасибо Риз за ваш ответ. Однако, как представляется, проблема связана с тем, что SAS интерпретирует & quot;% _ ASK & quot; в качестве макропеременной. Я получаю следующее сообщение: ПРЕДУПРЕЖДЕНИЕ: Явный вызов макроса _ASK не разрешен, а затем следующая ОШИБКА. Следующие столбцы не были найдены в таблицах-вкладках: Clean_prices, Kuwait, libname, memname, name. – DR_M 11 November 2014 в 02:44
  • 2
    Чтобы сообщение об ошибке было значимым, Кувейт - это имя_выбора clean_prices - это набор данных. – DR_M 11 November 2014 в 02:52
  • 3
    Я обновил код. a like в PROC SQL с подстановочным знаком % требуется одиночная цитата вместо указанной двойной кавычки. – DomPazz 11 November 2014 в 03:50
  • 4
  • 5
    Извините, следовало бы обратиться к SASHELP.VCOLUMN. Однако, если ваша база данных находится на сервере, то есть SQL или Oracle, это может и не работать. Вероятно, вы получили 0 в своем запросе, потому что он чувствителен к регистру. try libname = & quot; WORK & quot; вместо. – Reeza 12 November 2014 в 01:27
Другие вопросы по тегам:

Похожие вопросы: