我读了很多关于第一个的内容。最后。 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 Proc Output。但我希望原始数据集充满p25和p75变量。 然后我试了一下:
proc sql;
create table mm.newData as select *, sum(spread) as sumspread
from mm.Data
group by RIC; quit;
但是它首先将它再次分组,然后没有P25功能(我只是为了试用而输入了总和)。
答案 0 :(得分:3)
合并使用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;