把它你可以這樣做:
data usage;
set lab3 end=eof;
array v{*} v21-v27
array n{7};
retain n: 0;
do i = 1 to dim(v);
if v[i] in (2, 3, 4) then n[i] + 1;
end;
if eof then do j = 1 to dim(v);
variable = vname(v[j]);
pct_usage = 100 * n[j]/_n_;
output;
end;
keep variable pct_usage;
run;
這將創建一個計數器陣列,每個變量一個,只要相應的變量等於2,3或4,就會增加一個。
在數據步驟結束時,我們輸出每個變量的記錄並記錄百分比作爲計數器除以觀察次數(_n_
當eof
爲真)。
另一種方法是使用proc freq
。
data indicators;
set lab3;
array v{*} v21-v27;
array ind{7};
do i = 1 to dim(v);
ind[i] = (v[i] in (2, 3, 4));
end;
run;
proc freq data = indicators;
tables ind:/out = usage;
run;
這會創建二進制指示符變量,每個輸入變量一個,當輸入爲2,3或4時爲1,否則爲0。然後使用proc freq
獲得計數和百分比。
在這裏,proc freq可能會更好。你應該發佈你的數據的樣子和你在做什麼。一個循環可能不會在這裏工作,因爲循環通常只在一行上起作用。你當然可以修改這個行爲,但它比proc freq更多的工作。 – Reeza