SAS-如何计算最大值和最小值之间的差异?

时间:2016-11-06 22:43:10

标签: sas

我使用以下代码计算列中最大值和最小值之间的差异,但它不像智能方式。那么有人可以给我一些建议吗?

P.S。我需要将差异作为新变量返回数据集,因为我想根据这种差异删除数据集。

proc univariate noprint date=test;
var time_l_;
output out=result max=max min=min;
run;

data test;
set result test;
run;

data test;
set test;
gap=max-min;
run;

3 个答案:

答案 0 :(得分:0)

实际上,你非常接近我认为好的结果。这不是绝对最快的方式,但是当你不需要惊人的性能时它可能是最好的,因为它比快速的方法复杂得多。

创建最大/最小数据集,然后使用if _n_ = 1 then set result;,这将导入一次。变量自动被RETAINed,因为它们被引入SET语句。然后在同一数据步骤中计算间隙。

proc univariate noprint data=sashelp.class;
  var age;
  output out=result max=max min=min;
run;

data test;
  if _n_=1 then set result;
  set sashelp.class;
  gap = max-min;
run;

答案 1 :(得分:0)

SQL解决方案非常简单,但在日志中留下了有关重新合并的消息。

Proc SQL;
 Create table want as
 Select *, max(age) as max_age, min(age) as min_age, calculated max_age - calculated min_age as age_diff
From have;
Quit;

答案 2 :(得分:0)

使用range函数的简单SQL解决方案:

proc sql;
create table want as 
    select *,range(age) as age_range 
    from sashelp.class;
quit;