Существует несколько вариантов фильтрации имен.
Для префиксов или списков переменных это довольно просто. Для суффиксов или более сложных паттернов он остается более сложным. В общем случае вы можете сокращать списки следующим образом:
_numeric_ : all numeric variables
_character_ : all character variables
_all_ : all variables
prefix1 - prefix# : all variables with the same prefix assuming they're numbered
prefix: : all variables that start with prefix
firstVar -- lastVar : variables based on location between first and last variable, including the first and last.
first-numeric-lastVar : variables that are numeric based on location between first and last variable
Для чего-либо более сложного требуется отфильтровать его через список метаданных. SAS в основном хранит некоторые метаданные о каждом наборе данных, чтобы вы могли запрашивать эту информацию для создания своих списков. Данные о столбцах и типах находятся в наборе данных sashelp.vcolumn
или dictionary.column
.
Чтобы отфильтровать все столбцы со словом mpg
, например:
*generate variable list;
proc sql noprint;
select name into :var_list separated by " "
from sashelp.vcolumn
where libname = 'SASHELP' and memname = 'CARS'
and lowcase(name) like '%mpg%';
quit;
*check log for results;
%put &var_list;
*verification from original table;
proc contents data=sashelp.cars;
run;
*example of usage;
data want;
set sashelp.cars;
keep &var_list;
run;
Некоторые подробности доступны в этом сообщении блога и здесь ( документация) .