如何在"堆叠"数据集中查找每个唯一观察值的变量的最大值

joe*_*oey 6 sas

对不起vauge标题.

我的数据集看起来基本上是这样的:

ID   X
18   1
18   1
18   2
18   1
18   2
369  2
369  3
369  3
361  1
Run Code Online (Sandbox Code Playgroud)

我想要的是找到每个ID的最大值x.在此数据集中,ID = 18时为2,ID = 361时为3.

任何反馈将不胜感激.

Mat*_*zol 8

Proc表示类声明(因此您不必排序)并请求最大统计量可能是最直接的方法(未经测试):

data sample; 
    input id x; 
datalines; 
18  1 
18  1 
18  2 
18  1 
18  2 
369 2 
369 3 
369 3 
361 1 
; 
run; 


proc means data=sample noprint max nway missing; 
   class id;
   var x;
   output out=sample_max (drop=_type_ _freq_) max=;
run; 

有关Proc Means(http://support.sas.com/onlinedoc/913/docMainpage.jsp)的详细信息,请查看在线SAS文档.


小智 3

我不太明白你的例子。我无法想象输入数据集真的具有一次观察中的所有值。你的意思是这样的吗?

data sample;
    input myid myvalue;
datalines;
18  1
18  1
18  2
18  1
18  2
369 2
369 3
369 3
361 1
;

proc sort data=sample;
    by myid myvalue;
run;

data result;
    set sample;
    by myid;

    if last.myid then output;
run;

proc print data=result;
run;
Run Code Online (Sandbox Code Playgroud)

这会给你这个结果:

Obs    myid    myvalue

 1       18       2   
 2      361       1   
 3      369       3   
Run Code Online (Sandbox Code Playgroud)