Sas 使用Proc-sql获取多变量的statiscs

Sas 使用Proc-sql获取多变量的statiscs,sas,proc-sql,Sas,Proc Sql,我想使用ProcSQL创建一个数据集,其中包含许多变量的一些统计信息,如最小值和最大值。下面的代码仅返回第一个变量为min和max的数据集,其余变量min和max不显示在数据集中 proc sql; CREATE TABLE Lib.VarNum AS %do i=1 %to &nvars; select min(%SCAN(&numvar,&i)) as Min%SCAN(&numvar,&i), max(%SCAN(&am

我想使用ProcSQL创建一个数据集,其中包含许多变量的一些统计信息,如最小值和最大值。下面的代码仅返回第一个变量为min和max的数据集,其余变量min和max不显示在数据集中

  proc sql;
  CREATE TABLE Lib.VarNum AS 
  %do i=1 %to &nvars;
  select  min(%SCAN(&numvar,&i)) as Min%SCAN(&numvar,&i),
     max(%SCAN(&numvar,&i)) as Max%SCAN(&numvar,&i)
  from &data (keep= _numeric_);
  %end;
  quit;

有人能帮我吗?

使用proc方法是最好的方法

  proc means data=sashelp.cars noprint;
 var _numeric_;
 output out=want (drop= _type_ _freq_ )min(_numeric_) =
 max(_numeric_) =/autoname;
 run;
但是,如果您想通过Proc SQL这样做,可以从dictionary.columns中最容易地找到宏变量,并在表中使用它们

 /* creating macrovariables using dictionary.columns*/
 proc sql noprint;
select 'min('|| trim(name)||') as min_'||name,
   'max('|| trim(name)||') as max_'||name 
   into :min separated by ',' , :max separated by ','
from dictionary.columns
where libname ='SASHELP'
and memname ='CARS'
and upcase(type) ='NUM';
宏变量的值可以检查,并且只能部分显示

 %put &min;
  min(MSRP) as min_MSRP,min(Invoice) as min_Invoice,min(EngineSize) as min_EngineSize
在proc sql语句中使用此宏变量,如下所示

proc sql;
create table want as 
select &min, &max from sashelp.cars;

对于不起作用的代码,您确实需要提供完整的代码以及对不起作用的内容的解释。不过,一般来说,PROC-MEANS的速度要快得多。谢谢,我会用PROC-MEANS来做