proc freq 관측치 카운트 질문입니다!
data a;
구조가
a b c d
1 m y g
2 g k
3 g
4 k d
이런식으로 있을 경우
a,b,c,d 변수 안에 g라는 관측치가 몇개인지 알고 싶습니다.
예제를 볼경우 g= 3개가 되겠죠?
저는 그냥 변수별로 데이터를 따로 만들어서 set으로 다 붙여가지고 proc freq문을 이용해 빈도수를 구했는데
변수별로 데이터를 나누지 않는 다른 방법은 없는 건가요?
if문을 이용하려고 했지만 예제는 관측치 종류가 m y g d k 처럼 몇개 안되지만 실제데이터는 수백개나 되거든요
sas 고수님들 답변좀 달아주세요^^(예문으로 코딩으로 달아주시면 감사하겠습니다 ㅋ)
================================================================================
그럼 이렇게 해보세요 all 이라는 변수를 만들고 all 변수에는 a~d 까지 모든 변수값을 다 넣어줍니다. 그리고 그것의 빈도를 세는 거죠. 돌려보니 d=1 개 g=3개 k=2개 m=1개 y=1개로 나오네요.
data a;
infile cards missover dlm=',';
input a $ b $ c $ d $;
cards;
m, y, g, ,
g, , , k
, , g,
k , , d
run;
proc contents data=a out=a_1 noprint;
run;
%macro count;
data _null_;
set a_1 end=eof nobs=cnt;
call symput ('name'||left(_n_),name);
if eof then call symput ('cnt',cnt);
run;
data b;
set a;
%do i=1 %to &cnt;
all=&&name&i; output;
%end;
keep all;
run;
proc freq data=b;
table all;
run;
%mend;
%count;