※ 引述《lordoffish (阿邦)》之銘言:
: [軟體程式類別]:
: SAS
: [程式問題]:
: 因個人需求我需要數在多個變數內出現特定數字或字元的數量
: 例如:資料總共有5個變數 皆為數值型
: ID VAR1 VAR2 VAR3 VAR4 VAR5
: 1 5 4 5 3 1
: 2 3 2 1 2 3
: 3 4 5 2 2 1
: 請有程式碼可以直接數出ID為1的資料在5個變數中,5這個數字共出現幾次嗎?
: [軟體熟悉度]:
: 中(3個月到1年)
: -----------------------------------------------------------------------------
我也來提供一個寫法, 這寫法也不管你有幾個變數有幾筆records
假設你的dataset如下:
data a;
id=1; var1=5; var2=4; var3=5; var4=4; var5=1;output;
id=2; var1=3; var2=2; var3=1; var4=2; var5=3;output;
id=3; var1=4; var2=5; var3=2; var4=2; var5=1;output;
run;
%macro names;
%let dsid=%sysfunc(open(a,i));
%do j = 1 %to %sysfunc(attrn(&dsid,nobs));
%let rr = %sysfunc(fetch(&dsid));
%let qq=0;
%do i=2 %to %sysfunc(attrn(&dsid, nvars));
%if %sysfunc(getvarn(&dsid,&i)) = 5 %then %do;
%let qq = %eval(&qq+1);
%end;
%end;
%put ID&j=&qq;
%end;
%let dsid = %sysfunc(close(&dsid));
%mend names;
%names;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.140.157.215