datastep中的SAS计算

datastep中的SAS计算,sas,dataset,Sas,Dataset,我读了很多关于第一个的书。最后。SAS中的函数和基本计算,但我希望在datastep中避免以下问题(如果可能): 我需要标记每个方向超过25%的观察值。也就是说,我想计算离群值,并给它们一个1或0(离群值与否)。我的问题是,我想为数据集中的一组/类观察值执行此操作 Group Value OutlierFlag a 1 1 a 10 0 a 11 0 a 400 1 b 2 0 b 2 0 b 500 1 复

我读了很多关于第一个的书。最后。SAS中的函数和基本计算,但我希望在datastep中避免以下问题(如果可能):

我需要标记每个方向超过25%的观察值。也就是说,我想计算离群值,并给它们一个1或0(离群值与否)。我的问题是,我想为数据集中的一组/类观察值执行此操作

Group Value OutlierFlag
a    1     1
a    10    0
a    11    0
a    400   1
b    2     0
b    2     0
b    500   1
复杂化/推进:我需要添加一个时间网格,这意味着我需要对每分钟的所有观测值求和,并将值记在一种网格上(当前观测值不在指定的时间间隔内)。我已经生成了网格(分钟步骤)。但我如何总结观察结果,并在每分钟的观察中将其纳入网格数据步骤? 我很抱歉,如果这是太模糊,但也许你们中的一个知道如何做,或有一个想法。我非常感激

最好的

编辑:

好的,我测试了:

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)。

  • 将STACKODS和NWAY选项添加到Proc means。这只计算在 最高级别(即仅在集团级别)并保持数据范围
  • 按组合并使用

    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;
    

请发布您尝试过的内容。First/Last不适用于此问题,但很可能需要按组使用。如果没有一个好的数据样本、预期的输出和您尝试过的内容,我们猜的东西太多了。嗨,Reeza,谢谢您的回答。我试过procsql,但显然没有P25或类似的函数。然后我用P25和P75尝试了Proc Means,但它压缩了我不想要的数据我可以将Proc means输出附加到原始数据集并获取计算所需的值吗。如果您有SAS 9.4,它可能支持分位数函数。否则,proc的意思是做这件事的常用方法。只是做了,对不起!您必须将proc means输出与原始数据集合并。不可能通过数据集一次性计算百分位数。太棒了,非常感谢!!工作就像一个符咒,NWAY和STACKODS非常有用