以下のデータセットを入力として持っています
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でこれを行う方法を教えてください。
以下のデータセットを入力として持っています
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でこれを行う方法を教えてください。
または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;
proc sql noprint;
create table test as select distinct id, count(id)
from your_table
group by ID
order by ID
;
quit;
これを試して:
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;
PROC SORT DATA=YOURS NOPRINT;
BY ID; RUN;
PROC MEANS DATA=YOURS;
VAR ID;
BY ID;
OUTPUT OUT=NEWDATASET N=; RUN;
また、新しいデータセットに Id 変数とN変数のみを保持することも選択できます。
実行したい集計が複雑な場合は、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;
また
集計したい列をドラッグアンドドロップするだけで、要約オプションでAvg、Count、miss、NMissなど、実行したい操作を選択できます。