/********************************************************************
*                                                                   *
*  TEC98_06.SAS  Ver.1.0 by K.T.  1998/11/14(土)16:06:40          *
*                                                                   *
*  目的:上位数十%のみを取り出す                                   *
*                                                                   *
*    ある集団の任意の変数のとる値の上位(下位)から数十%のデータ   *
*    のサブセットを作成する                                         *
*                                                                   *
********************************************************************/

* 変数aについて上位50%の値をもつオブザベ−ションのみ取り出す ;
DATA d1 ;
   INPUT a b;
   k=_N_;
   cards;
   20 30
   10 12
   30 33
   40 53
   45 23
   55 43
   ;
RUN;
PROC SORT DATA=d1; BY DESCENDING a; * ここで上位下位を決定 ;
RUN;
PROC MEANS NOPRINT; VAR a; OUTPUT OUT=d2 N=num; RUN;

DATA d3;
   IF _N_=1 THEN SET d2;
   SET d1;
   k=0.5 ;                          * ここで割合(50%)を決定 ;
   n= int(k*num);
   IF _N_<= n ;                     * 同値を含んでいる ;
   KEEP a b ;                       * 不要な変数のカット ;
RUN;

PROC PRINT;
RUN;

戻る  進む  ホームページへ
mailto: toyomura@hokusei.ac.jp
home page: http://www.ipc.hokusei.ac.jp/~z00105/index.html