如何使用 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
也可用于获取数据集的元数据,从而获取变量名。
一系列表达式OR
d在一起,或者一个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;
我有一个大数据,其中包含 SASUniversity Edition.Now 中的 400 多个变量,我只想 select 那些以 M1、M2 和 M3.How 结尾的变量我可以做到吗使用 proc-Sql.Please 帮助我。
元数据 table DICTIONARY.COLUMNS
可以查询到 select 数据集的变量名 into
一个宏变量,可以随后在 select
查询数据集的子句。
Proc CONTENTS
也可用于获取数据集的元数据,从而获取变量名。
一系列表达式OR
d在一起,或者一个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;