2015-02-10 3 views
1

У меня есть набор данных о пациентах, где я хочу подсчитать, сколько пациентов (наблюдений) имеют данный диагностический код. У меня есть 9 возможных переменных, где это возможно, в diag1, diag2 ... diag9. Код V271. Я не могу понять, как это сделать с предложением WHERE или proc freq.Частота значения для нескольких переменных?

Любая помощь будет оценена!

+0

Предостережение о нижеследующих ниже методах заключается в том, что у человека может быть несколько диагностических кодов, которые эквивалентны одному условию, которое определяется несколькими кодами. Это скорее диагностическое кодирование/практика, но я видел, как это происходит. – Reeza

ответ

2

Ваша основная стратегия заключается в создании набора данных, который не является уровнем пациента, но одно наблюдение - это один диагностический код пациента (таким образом, до 9 наблюдений на пациента). Что-то вроде этого:

data want; 
    set have; 
    array diag[9]; 
    do _i = 1 to dim(diag); 
    if not missing(diag[_i]) then do; 
     diagnosis_Code = diag[_i]; 
     output; 
    end; 
    end; 
    keep diagnosis_code patient_id [other variables you might want]; 
run; 

После этого вы можете запустить proc freq в результирующем наборе данных. Вы также можете изменить критерии, не пропущенные до if diag[_i] = 'V271' then do;, чтобы получить только данные V271 в данных.

+0

Что такое тусклость (диаг)? Могу ли я просто скопировать/вставить это? – lrk889

+0

Эта часть определяет размеры массива (в случае его изменения лучше не хардкор). – Joe

+0

Что касается последней части комментария Джо относительно if diag [_i}, вы можете использовать функцию WhatC, а не цикл do. – Reeza

1

Альтернативный способ изменения данных, которые могут соответствовать методу Джо, заключается в использовании proc transpose.

proc transpose data=have out=want(keep=patient_id col1 
            rename=(col1=diag) 
            where=(diag is not missing)); 
    by patient_id; 
    var diag1-diag9; 
run; 
+0

. Вы могли бы, конечно же, сделать его ближе к моему другу с опцией 'where' dataset в инструкции' out'. – Joe

+0

Хороший вопрос. Сделано редактирование. – DWal

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