我有7个变量,489个观察值,变量值为0-4。 我需要的是计数使用百分比。 答案0,1代表非使用,答案2,3,4表示使用。 我创建了7个额外的变量并将上面的所有值都变为: 1 =使用情况 - 0 =不使用。 现在,我不知道如何计算和呈现每个var有多少“1”并将其除以489.
data LAB7;
set LAB3;
array v{*} v21-v27;
array VU{7};
DO i=1 to dim(v);
if v[i] = 1|0 THEN VU[i]=0;
else VU[i]=1;
END;
run;
答案 0 :(得分:3)
你可以这样做:
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,就会增加1。
在数据步骤结束时,我们输出每个变量的记录,并记录百分比作为计数器除以观察数(_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
获得计数和百分比。