考试中心
CDA网校
CDA社区
CDA竞赛
CDA技术答疑
CDA会员
CDA产品
大数据与人工智能实验室
好学AI
(下一代智能学习产品)
CDA网校
CAIE人工智能工程师认证
首页
资讯
动态
认证考试
企业内训
搜索
登录
首页
精彩阅读
SAS处理极端值_数据分析师
SAS处理极端值_数据分析师
2014-11-15
收藏
SAS处理极端值
_数据分析师
按照百分位数处理极端值
比如将99%分位数以上的数用99%分位数代替,1%分位数以下的数用1%分位数代替。
(一)一个变量
option mlogic;
%macro
quan(data,variable,ll,ul) ;
proc means data=&data ;
var &variable;
output out=&data.1 (drop= _type_ _freq_) &ll=a &ul=b;
run;
data &data.2;
set &data;
if _n_=
1
then set &data.1;
if &variable
if &variable>b then x=b;
drop a b;
run;
%mend
;
%
quan
(quan,x,p5,p95)
此处利用宏来修改原数据集,此处四个参数data,variable,ll,ul分别代表数据集、变量以及上下限。
另外我们亦可以利用proc rank来编写,得到相应的分位数的值。亦可以利用proc univariate过程。有兴趣的可以参考《cody’s data cleanning techniques》。
(二)多个变量
多个变量的方法也是类似于一个变量的。
%macro
quan1(number) ;
data quan;
array x(&number) x1-x&number;
do i=
1
to
1000
;
%do j=
1
%to &number;
x{&j}=ranuni(
0
);
%end;
output;
end;
drop i;
run;
proc means data=quan;
var x1-x&number;
output out=quan1 (drop= _type_ _freq_)
p5(x1-x&number)=a1-a&number p95(x1-x&number)=b1-b&number;
run;
data quan2;
set quan;
if _n_=
1
then set quan1;
array x(&number)x1-x&number;
array a(&number) a1-a&number;
array b(&number) b1-b&number;
do i=
1
to dim(x) ;
if x{i]
if x{i}>b{i} then x{i}=b{i};
end;
keep x1-x&number;
%mend
;
%
quan1
(
4
)
此处任然利用上面的思路,只不过利用了数组的思路进行比较,然后判断替换。
本程序是通过随机生成数据进行分析,所以在变量名格式上(x1-x4)一致,所以方便后面判断,宏的参数只有一个变量的个数。而实际情况比这个更加复杂。
https://www.cda.cn/
数据分析
数据分析咨询请扫描二维码
上一篇
成为CDA会员俱乐部志愿者你将获得!
下一篇
图论在大数据分析中的作用!
考试指南
考试介绍
考试大纲
考试内容
考试地点
报考指南
报考流程
考试时间
报名费用
联系我们
热门栏目
考试动态
报考指南
复习备考
职业发展
直播公开课
经验分享
客服
在线
立即咨询