3

以下のデータセットを入力として持っています

ID  
--  

1  
2  
2  
3  
4  
4  
4  
5  

以下のように新しいデータセットが必要です

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

1    1  
2    2  
3    1  
4    3  
5    1  

PROC SQLを使用せずにSASでこれを行う方法を教えてください。

4

7 に答える 7

7

またはProc FreqまたはProc Summaryはどうですか?これらにより、データを事前に並べ替える必要がなくなります。

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;
于 2012-04-27T14:59:42.363 に答える
5
proc sql noprint;
create table test as select distinct id, count(id)
from your_table
group by ID
order by ID
;
quit;
于 2012-04-27T14:26:22.857 に答える
3

これを試して:

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;
于 2012-04-27T14:28:39.520 に答える
0
PROC SORT DATA=YOURS NOPRINT;
  BY ID; RUN;
PROC MEANS DATA=YOURS;
  VAR ID;
  BY ID;
OUTPUT OUT=NEWDATASET N=; RUN;

また、新しいデータセットに Id 変数とN変数のみを保持することも選択できます。

于 2015-10-12T19:56:18.853 に答える
-1

実行したい集計が複雑な場合は、PROC SQL のみを使用してください。これは、SQL の Group by に慣れているためです。

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

また

  • SAS-EG Query builders を使用している場合、小規模な分析に非常に役立ちます。

集計したい列をドラッグアンドドロップするだけで、要約オプションでAvg、Count、miss、NMissなど、実行したい操作を選択できます。

于 2016-11-17T11:54:31.470 に答える