2015-04-23 2 views
0

У меня есть 7 переменных, 489 наблюдений с переменными значениями 0-4. Что мне нужно, так это процент использования. Ответы 0,1 стенд для использования, и ответы 2,3,4 для использования. Я создал 7 дополнительных vars и перевел все значения выше: 1 = использование - 0 = неприменение. Теперь, я не знаю, как посчитать и представить, сколько «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

Здесь может работать лучшая частота. Вы должны опубликовать образец того, как выглядят ваши данные, и то, что вам нужно. Петля, вероятно, не будет работать здесь, потому что цикл обычно работает только в строке. Вы можете изменить это поведение, конечно, но его больше работать, чем proc freq. – Reeza

ответ

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.

В конце этапа данных мы выводим запись для каждой переменной и записываем в процентах, как счетчик, деленный на количество наблюдений (_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; 

Это создает бинарные переменные индикатора, по одному для каждой из входных переменных, которые являются 1, когда вход 2, 3, или 4, и 0 в противном случае. Затем рассчитываются и проценты, используя proc freq.

+0

ТОЧНО! Нет необходимости изобретать велосипед. PROC FREQ - лучшая практика и путь. – Salva

Смежные вопросы