Я работаю с набором данных SAS, который включает в себя до 30 лекарств, прописанных отдельному пациенту. Лекарства кодируются med1, med2 ... med30. Каждое лекарство представлено 5-значной символьной переменной. Используя идентификатор, я могу затем кодировать название препарата и то, является ли это конкретное лекарство актуальным антибиотиком или системным антибиотиком.
Для каждого пациента я хочу использовать все 30 кодов лекарств, чтобы создать одну переменную, указывающую, получал ли пациент только антибиотик местного действия, только системный антибиотик, или как местный, так и пероральный антибиотик. Поэтому, если какое-либо из 30 лекарств является системным антибиотиком, я хочу, чтобы пациент кодировался как oral_antibiotic = 1.
У меня сейчас есть этот код:
данные хотят;
установить есть;
массивы лекарств [30] med1-med30;
если meds [i] in ('06925' '06920') тогда сделайте;
пенициллин = 1;
oral_antibiotic = 1;
конец;
иначе, если meds [i] in ('03197') тогда делают;
Neosporin = 1;
topical_antibiotic = 1;
конец;
.... (многие делают петли с большим количеством лекарств)
бежать;
Проблема в том, что этот код создает одну переменную индикатора вместо 30, перезаписывая предыдущую информацию.
Я думаю, что мне действительно нужно 30 индикаторных переменных, указывающих, является ли каждое из 30 лекарств пероральным или местным антибиотиком, прежде чем я напишу код, который говорит, что если какое-либо из лекарств является пероральным антибиотиком, пациент получил пероральный антибиотик.
Я новичок в макросах и буду очень признателен за помощь.
data current;
input med1 med2 med3;
cards;
'06925' '06920' '03197' ;
run;
И я хочу это:
data want;
input med1 topical_antibiotic1 oral_antibiotic1 med2 topical_antibiotic2 oral_antibiotic2 med3 topical_antibiotic3 oral_antibiotic3;
cards;
'06925' 0 1 '06920' 0 1 '03197' 1 0
;
run;