计算值发生的次数

时间:2015-04-23 19:08:01

标签: arrays loops count sas

我有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;

1 个答案:

答案 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获得计数和百分比。