在SAS组(group by in sas)

2019-07-29 04:00发布

我有下面的数据集作为输入

ID  
--  

1  
2  
2  
3  
4  
4  
4  
5  

而且需要如下一个新的数据集

ID   count of ID  
--   -----------

1    1  
2    2  
3    1  
4    3  
5    1  

你能告诉如何做到这一点的SAS wihtout使用PROC SQL?

Answer 1:

试试这个:

DATA Have; 
 input id ; 
 datalines;
 1
 2
 2
 3
 4
 4
 4
 5 
 ;

Proc Sort data=Have;
 by ID;
run;

Data Want;
 Set Have;
 By ID;
 If first.ID then Count=0;
 Count+1;
 If Last.ID then Output;
Run;


Answer 2:

或者怎么样PROC频率或PROC总结? 这些避免必须预先分类的数据。

proc freq data=have noprint;
table id / out=want1 (drop=percent);
run;

proc summary data=have nway;
class id;
output out=want2 (drop=_type_);
run;


Answer 3:

proc sql noprint;
create table test as select distinct id, count(id)
from your_table
group by ID
order by ID
;
quit;


Answer 4:

PROC SORT DATA=YOURS NOPRINT;
  BY ID; RUN;
PROC MEANS DATA=YOURS;
  VAR ID;
  BY ID;
OUTPUT OUT=NEWDATASET N=; RUN;

您也可以选择只保留Id和N个变量在newdataset。



Answer 5:

我们可以用简单的SQL PROC计数做到这一点:

 proc sql;
 create table want as
    select id, count(id) as count_of_id 
    from have
    group by id;
 quit;


Answer 6:

这是另一种可能性,常常被称为陶氏建筑:

Data want;
  do count=1 by 1 until(last.ID);
    set have;
    by id;
    end;
run;


Answer 7:

如果你想要做的聚集是复杂的,然后用PROC SQL只去像我们比较熟悉的集团在SQL

proc sql ;
create table solution_1 as select distinct ID, count(ID)
from table_1
group by ID
order by ID
;
quit;

要么

  • 如果使用的是SAS-EG查询生成器在分析小非常有用。

这只是拖放ü要汇总和总结选项中选择你要像平均执行任何操作列,计数,小姐,NMiss等。



文章来源: group by in sas
标签: sas