使用 Proc sql 获取多个变量的统计信息
Using Proc sql to get statiscs for many variables
我想使用 Porc sql 创建一个数据集,其中包含一些统计数据,例如大量变量的最小值和最大值。下面的代码仅returns一个数据集,其中第一个变量的最小值和最大值,其余变量的最小值和最大值未显示在数据集中。
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;
我想使用 Porc sql 创建一个数据集,其中包含一些统计数据,例如大量变量的最小值和最大值。下面的代码仅returns一个数据集,其中第一个变量的最小值和最大值,其余变量的最小值和最大值未显示在数据集中。
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;