如何使用 Proc-sql select 在 SAS 中以 M1、M2 和 M3 结尾的特定变量?

How to select specific variables ending with M1,M2 and M3 in SAS using Proc-sql?

我有一个大数据,其中包含 SASUniversity Edition.Now 中的 400 多个变量,我只想 select 那些以 M1、M2 和 M3.How 结尾的变量我可以做到吗使用 proc-Sql.Please 帮助我。

元数据 table DICTIONARY.COLUMNS 可以查询到 select 数据集的变量名 into 一个宏变量,可以随后在 select 查询数据集的子句。

Proc CONTENTS 也可用于获取数据集的元数据,从而获取变量名。

一系列表达式ORd在一起,或者一个Perl正则表达式可以用来selectM变量名。

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;