数据步骤中的SAS计算

SAS calculations in datastep

我读了很多关于第一个的内容。最后。 SAS 中的函数和基本计算,尽管我想在数据步骤中规避以下问题(如果可能):

我需要标记每个方向上超过第 25 个百分位数的每个观察值。 IE。我想计算离群值并给它们 1 或 0(离群值与否)。我遇到的问题是我想对数据集中的 group/class 个观察结果进行处理。

Group Value OutlierFlag
a    1     1
a    10    0
a    11    0
a    400   1
b    2     0
b    2     0
b    500   1

致complicate/advance:我需要添加一个时间网格,这意味着我需要对每分钟的所有观察结果求和并将值写到一种网格上(当前观察结果不在指定的时间间隔内) ).我已经制作了网格(微小的步骤)。但是我如何总结观察并将它们包含在每分钟观察中的网格数据步骤中? 如果这太模糊,我很抱歉,但也许你们中的一个人知道该怎么做或有想法。非常感谢!

最好!

编辑:

好的,我测试了:

proc means data = MM.Data median P25 P75; 
class Security;
ods output Summary=mm.Data_median; 
var price spread; run; 

data mm.data; set mm.Data_median;
run; 

这基本上给了我 Proc 均值输出。但我想要用 p25 和 p75 变量填充的原始数据集。 然后我尝试了:

proc sql; 
create table mm.newData as select *, sum(spread) as sumspread 
from mm.Data 
group by RIC; quit; 

但是它先重新分组,然后就没有P25的功能了(我只是为了试用输入了sum)

  • 为 Proc 方法添加 STACKODS 和 NWAY 选项。这只计算在 最高级别(即仅在组级别)并保持数据广泛。
  • 使用 BY 组合并

    proc means data=sashelp.class nway stackods median p25 p75;
        class sex;
        var weight;
        ods output summary=stats;
    run;
    
    proc sort data=sashelp.class out=class;
        by sex;
    
    data want;
        merge class stats (keep=sex median p25 p75);
        by sex;
        flag_p75=ifn(weight>p75, 1, 0);
    run;