SAS中文论坛

标题: 如何求最大值? [打印本页]

作者: shiyiming    时间: 2008-9-30 01:08
标题: 如何求最大值?
刚刚接触SAS,在数据集 temp 中有一组数字,求出现频率最高的,
4
2
2
3
2
1
1
7

Proc Freq data=temp order = freq;
   tables n;
Run;

刚知道,其结果可以这样保留:

Proc Freq data=temp order = freq;
   tables n  [color=#4040FF:2964iuwq]out = new[/color:2964iuwq];
Run;

在 Output 窗口中看到 2 出现了 3 次,如何将这个 2 和 3 次以程序的方式显示出来呢?
如果数据较多,怎么能显示最前面 5 条记录?

Proc Print Data=New;
     where obs <6;    * 这行出错 ;
Run;

先谢过。
作者: shiyiming    时间: 2008-10-2 14:17
标题: Re: 如何求最大值?
这个论坛FTP有本书籍,老兄可参照一下,我记得上面有介绍《世界统计与分析全才.SAS系统应用开发指南》
作者: shiyiming    时间: 2008-10-4 11:28
标题: Re: 如何求最大值?
谢谢,能否给个链接?
我也看了看书,是否可以这样:

PROC freq data=lottery Order=freq;
   tables n / Out = New;
Run;

Proc print Data = new (firstobs = 1 obs = 5) ;

Run;
作者: shiyiming    时间: 2008-10-6 16:59
标题: Re: 如何求最大值?
[code:35qakas0]data temp;
     input a;
         cards;
1
2
3
3
5
3
6
3
5
2
6
8
5
7
8
5
6
9
4
6
8
1
3
6
2
3
6
3
;
run;

proc sort data=temp;
     by a;
run;

data temp;
     set temp;
         by a;
         if first.a then num=0;
         num+1;
         if last.a;
run;

proc sort data=temp;
     by descending num;
run;

data temp;
     set temp;
         by descending num;
         if _n_<=5;
run;
[/code:35qakas0]
作者: shiyiming    时间: 2008-10-6 17:02
标题: Re: 如何求最大值?
[code:1gc7u17c]data temp;
     input a;
         cards;
1
2
3
3
5
3
6
3
5
2
6
8
5
7
8
5
6
9
4
6
8
1
3
6
2
3
6
3
;
run;

proc freq data=temp noprint;
     table a/out=aa;
run;

proc sort data=aa;
     by descending count;
run;

data temp(drop=percent);
     set aa;
         by descending count;
         if _n_<=5;
run;
[/code:1gc7u17c]
作者: shiyiming    时间: 2008-10-7 04:31
标题: Re: 如何求最大值?
十分感谢热心相助,又学了一招。
proc freq data=temp noprint;
     table a/out=aa;
run;

proc sort data=aa;
     by descending count;
run;

以上排序是否可以直接在 Proc Freq 里实现。

Proc Freq data=temp  order=Freq;
    table a / out=aa;
run;




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2