У меня есть огромный набор данных, содержащий людей, в которых некоторые из них имеют несколько процедур кода ICD-9. Мне нужно создать несколько когорт, в зависимости от того, какие ICD-9 кодируют эти люди, но моя обработка не работает, как я ее намереваюсь.Обработка по группам SAS: присвоение значений для всей группы
Вот набор выборки данных:
DATA TEST;
INPUT ID: $5. CODE;
FORMAT CODE Z4.;
DATALINES;
A 8006
A 8155
A 0080
A 0081
A 0082
A 0083
A 0084
B 8006
B 8155
B 0080
B 0081
B 0082
B 0083
B 0084
B 9999
;
RUN;
Субъекты А и В имеют те же самые коды, за исключением того, Тема В имеет дополнительный фиктивный код 9999
. Здесь, если у субъекта ТОЛЬКО есть коды 8006, 8155 и 0080 до 0084 (и ничего больше!), Тогда они помещаются в одну когорту. Тема A должна быть одной когорты, субъект B должен быть другим из-за фиктивного кода.
ниже код не делает по-обработки, как я намерен:
DATA TEST1; SET TEST;
BY ID;
IF CODE IN (8006,8155,0080:0084) THEN COHORT=1;
ELSE COHORT=2;
RUN;
ID CODE COHORT
A 8006 1
A 8155 1
A 0080 1
A 0081 1
A 0082 1
A 0083 1
A 0084 1
B 8006 1
B 8155 1
B 0080 1
B 0081 1
B 0082 1
B 0083 1
B 0084 1
B 9999 2
Я хочу, чтобы это выглядело так:
ID CODE COHORT
A 8006 1
A 8155 1
A 0080 1
A 0081 1
A 0082 1
A 0083 1
A 0084 1
B 8006 2
B 8155 2
B 0080 2
B 0081 2
B 0082 2
B 0083 2
B 0084 2
B 9999 2
Похоже, она должна быть простой, но есть ли другой способ использовать переработку? Я также попытался поместить данные в широкий формат, объединив все коды, разделенные запятой и индексацией, но этот подход является громоздким и не очень динамичным. Я ценю понимание!
Спасибо @Tom. Оператор 'WHICHN' присваивает значения' COHORT = 0'? Я просто хочу быть в курсе документации. – Foxer
Да, функция WHICHN() вернет 0, если значение не найдено. – Tom