我在SASUniversity Edition.Now中有一个包含400+变量的大数据,我只想选择那些以M1,M2和M3结尾的变量。
发布于 2019-08-25 18:01:34
可以查询元数据表DICTIONARY.COLUMNS以选择数据集的变量名into宏变量,随后可以在针对该数据集的查询的select子句中使用该宏变量。
Proc CONTENTS还可以用于获取数据集的元数据,从而获得变量名。
可以使用一系列ORd表达式或Perl正则表达式来选择M变量名称。
SQL:
* suppose big data is a data set named PERM_LIB.SURVEY_RESULTS;
proc sql noprint;
select name
into :varnamelist separated by ','
from dictionary.columns
where libname = 'PERM_LIB'
and memname = 'SURVEY_RESULTS'
and ( name like '%M1'
or name like '%M2'
or name like '%M3'
)
;
create table WORK.M_and_M_and_M as
select id, &varnamelist
from PERM_LIB.SURVEY_RESULTS
;内容:
data work.have;
do id = 1 to 10;
array v
x1-x10
y1-y10
z1-z10
abcm1-abcm10
defm1-defm20
;
output;
end;
proc contents noprint data=work.have out=havemeta;
run;
%let varnamelist=;
proc sql noprint;
select name into :varnamelist separated by ','
from havemeta
where prxmatch ('/(?i)M(1|2|3)[ ]*$/', name)
;
create table work.have_M123s as
select id, &varnamelist from work.have
;
quit;https://stackoverflow.com/questions/57643968
复制相似问题