首页 > 解决方案 > 如何在if语句中使用变量四分位数和四分位数范围?

问题描述

我正在 SAS 中进行一些数据清理,我对使用它非常陌生,并且我正在尝试创建一个新变量,在其中我将上限和下限之外的值设置为上限和下限的值。我通过 Q1-1.5*IQR 决定了我的底线,并通过 Q3+1.5*IQR 决定了我的底线。使用 if 语句创建新变量我有下面的代码。除了手工计算之外,我不知道如何包括我的上限和下限的值,但我觉得应该有更好的方法来做到这一点。如何在我的代码中使用四分位数和 IQR?

data practice.ipo_refined2;
    set practice.ipo;
    if 'Price.Revision'n > Q3 + qrange*1.5 then 'Price.Revision.Windsor'n = Q3+qrange*1.5;
    else if 'Price.Revision'n < Q1-qrange*1.5 then 'Price.Revision.Windsor'n = Q1-qrange*1.5;
    else 'Price.Revision.Windsor'n = 'Price.Revision'n;
    keep 'Initial.Return'n 'Price.Revision'n 'High.Tech'n 'Price.Revision.Windsor'n;
run;

标签: sas

解决方案


我猜这个例子会很有帮助。

proc summary data=sashelp.class;
   var height;
   output out=q q1=q1 q3=q3 qrange=qrange;
   run;
proc print;
   run;
data class;
   set sashelp.class;
   if _n_ eq 1 then set q;
   run;
proc print;
   run;

在此处输入图像描述


推荐阅读