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

如何使用Proc sql在SAS中选择以M1、M2和M3结尾的特定变量?,sas,proc-sql,Sas,Proc Sql,我有一个大数据,在SASUniversity版本中包含400多个变量。现在,我只想选择那些以M1结尾的变量,M2和M3。如何使用proc-Sql执行此操作。请帮助我。元数据表字典。可以查询列以将数据集的变量名称选择到宏变量中,该宏变量随后可在针对数据集的查询的select子句中使用 Proc内容还可用于获取元数据,从而获取数据集的变量名 可以使用一系列表达式或Perl正则表达式来选择M个变量名 SQL: 内容: data work.have; do id = 1 to 10; arr

我有一个大数据,在SASUniversity版本中包含400多个变量。现在,我只想选择那些以M1结尾的变量,M2和M3。如何使用proc-Sql执行此操作。请帮助我。

元数据表字典。可以查询列以将数据集的变量名称选择到宏变量中,该宏变量随后可在针对数据集的查询的select子句中使用

Proc内容还可用于获取元数据,从而获取数据集的变量名

可以使用一系列表达式或Perl正则表达式来选择M个变量名

SQL:

内容:

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;

欢迎使用Stackoverlow,请务必标记您的问题的答案,并向上投票您认为有用的答案。看见
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;