* Надо выбрать в файле данных тех пациентов, которым лекарство №1 давалось перед лекарством №2. * Автор: Raynald Levesque, rlevesque@videotron.ca, 9.5.2001. *Я предполагаю, что ваши данные организованы следующим образом. DATA LIST LIST /id(F) drug(A8) dtgiven(ADATE11). BEGIN DATA 1 'drugA' '01/01/2000' 1 'drugB' '01/02/2000' 1 'drugC' '01/03/2000' 2 'drugB' '01/07/2000' 2 'drugA' '01/09/2000' 2 'drugC' '01/15/2000' 2 'drugB' '01/20/2000' END DATA. LIST. * Сохраняем исходные данные. SORT CASES BY id. SAVE OUTFILE='c:\\temp\\mydata.sav'. * Выберем пациентов, которым лекарство №1 давалось первый раз перед лекарством №2. * Я предполагаю, что оба лекарства никогда не давались в один и тот же день. * Создадим макрос, решающий данную задачу. */////////////////////////////////. DEFINE !drug (drug1=!TOKENS(1) /drug2=!TOKENS(1)) GET FILE='c:\\temp\\mydata.sav'. * Сохраняем только наблюдения с двумя лекарствами, которые представляют для нас интерес. SELECT IF ANY(drug,!drug1, !drug2). SORT CASES BY id dtgiven. MATCH FILES FILE=* /BY=id /first=first. * Значение переменной first=1 означает, что это лекарство было назначено данному пациенту первым. * Следующая строка оставляет только id тех пациентов, где первым было именно лекарство №1. SELECT IF (first=1) and (drug=!drug1). MATCH FILES /FILE='c:\\temp\\mydata.sav' /TABLE=* /RENAME (drug dtgiven = d0 d1) /BY id /DROP= d0 d1. * Оставляем только тех пациентов, которым лекарство №1 давалось перед лекарством №2. SELECT IF first=1. EXECUTE. !ENDDEFINE. */////////////////////////////////. **************************************. * Протестируем макрос на данных, приведённых выше. **************************************. * Это выделит только пациента с id=1. !drug drug1='drugA' drug2='drugB'. LIST. * Это выделит обоих пациентов. !drug drug1='drugB' drug2='drugC'. LIST. * Это выделит только пациента с id=2. !drug drug1='drugB' drug2='drugA'. LIST.