全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4338 7
2013-04-30
请教各位大虾,

如果我想选取某一个变量分布在均值加减一个标准差之内和之外的值,可以用什么样的函数或是程序呢?谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-4-30 20:00:08
没有函数,写个宏程序吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-30 20:16:34
Imasasor 发表于 2013-4-30 20:00
没有函数,写个宏程序吧
请问宏要怎么写呢?
我的想法是用proc univariate找出mean 和std,然后再用if来选观测
不过这么貌似太低端了= =
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-30 20:27:48
就是这样,你回答对了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-30 22:26:45
data test;
  input id $3. x y;
  datalines;
001 24 46
002 34 89
003 67 73
006 18 56
024 9 12
087 45 67
123 23 98
345 29 68
653 34 76
;
run;
%macro outrange(dsn=,var=,idvar=);

  proc means data=&dsn noprint;
    var &var;
        output out=means(drop=_type_ _freq_) mean=m&var std=s&var;
  run;

  %let low=m&var-s&var;
  %let high=m&var+s&var;

  data _null_;
    set &dsn(keep=&idvar &var);
        if _n_=1 then set means;
        if &var lt &low and not missing(&var) or &var gt &high
          then put &idvar= &var=;
  run;

%mend outrange;

%outrange(dsn=test,var=x,idvar=id)

试试这个小宏,每次一变量,你可以改一改,同时做多个变量。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-30 23:33:21
rdwalk 发表于 2013-4-30 22:26
data test;
  input id $3. x y;
  datalines;
非常感谢!之前不知道proc mean得出的统计数值可以直接赋值到宏变量上:)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群