У меня есть набор данных, как например:SPSS: с использованием IF функции с REPEAT, когда каждый случай имеет несколько связанных экземпляров
Case #|DateA |Drug.1|Drug.2|Drug.3|DateB.1 |DateB.2 |DateB.3 |IV.1|IV.2|IV.3
------|------|------|------|------|--------|---------|--------|----|----|----
1 |DateA1| X | Y | X |DateB1.1|DateB1.2 |DateB1.3| 1 | 0 | 1
2 |DateA2| X | Y | X |DateB2.1|DateB2.2 |DateB2.3| 1 | 0 | 1
3 |DateA3| Y | Z | X |DateB3.1|DateB3.2 |DateB3.3| 0 | 0 | 1
4 |DateA4| Z | Z | Z |DateB4.1|DateB4.2 |DateB4.3| 0 | 0 | 0
Для каждого случая, есть связанные переменные, т.е. Drug.1 связан с DateB.1 и IV.1 (Переменная индикатора.1); Drug.2 связан с DateB.2 и IV.2 и т. Д.
Переменная IV.1 only = 1, если Drug.1 - это тот случай, который я хочу проанализировать (в этом примере я хочу проанализировать каждый получение препарата «Х») и т. д. для других переменных IV. В противном случае IV = 0, если препарат для этого сценария не является «Х».
Я хочу рассчитать разницу между DateA и DateB для каждого экземпляра, где получен препарат «X».
например. В приведенном выше примере я хочу, чтобы вычислить новую переменную:
DateDiffA1_B1.1 = DateA1 - DateB1.1
DateDiffA1_B2.1 = DateA1 - DateB2.1
DateDiffA1_B1.3 = DateA1 - DateB1.3
DateDiffA1_B2.3 = DateA1 - DateB2.3
DateDiffA1_B3.3 = DateA1 - DateB3.3
я не уверен, если это новая переменная должны быть связаны с каждым экземпляром Drug «X», как и для других переменных, или если он может быть единственной переменной, которая СЧИТАЕТ все экземпляры для каждого случая.
Конечная цель - указать, сколько раз каждый случай имел разницу в дате от < = 2 недели, когда они получали препарат «X». Если они не получали препарат «Х», я не хочу использовать дату разницы.
В конечном итоге я хочу сравнить тех, кто получил лекарство «Х» с разницей в времени < = 2 недели тем, кто этого не сделал, поэтому наличие другой индикаторной переменной, чтобы помочь разделить этих конкретных пациентов, было бы полезно.
Я не уверен в лучшем способе этого; Я подозреваю, что для этого потребуется комбинация функций IF и REPEAT с использованием переменной IV, но я относительно новичок в SPSS и синтаксисе и не знаю, как это кодировать, чтобы избежать ошибок.
Благодарим за помощь!
EDIT: Кажется, мне может понадобиться использовать IV в качестве векторной переменной для циклического преобразования связанных переменных в каждом случае. Я пробовал синтаксис ниже без толка:
DATASET ACTIVATE DataSet1.
vector IV = IV.1 to IV.3.
loop #i = .1 to .3.
do repeat DateB = DateB.1 to DateB.3
/DrugDateDiff = DateDiff.1 to DateDiff.3.
if IV(#i) = 1
/DrugDateDiff = datediff(DateA, DateB, "days").
end repeat.
end loop.
execute.
Благодарим Вас за ответ Eli-к! Я использовал ваш код с модификацией попытки включить дополнительную переменную, которая дает абсолютный датифик, прежде чем перейти к шагу подсчета этих <= 2 недель: 'если есть (1, IV.1 - IV .3) DrugDateDiff = 0. do повтор DateB = DateB.1 до DateB.3 /IV = IV.1 - IV.3 /DrugDateDiff = DrugDateDiff.1 to DrugDateDiff.3. , если IV = 1 /DrugDateDiff = dateiff (DateA, DateB, "days"). конец повтор. execute.' Однако, когда я запускаю это, он говорит, что переменная DrugDateDiff ранее не определена. – ScienceStudent
Я хочу создать переменную каждый раз от IV.1 до IV.3 = 1, то есть DrugDateDiff.1 до DrugDateDiff.3, если каждый IV = 1. – ScienceStudent
(1) вы используете 'DrugDateDiff' дважды - один раз, когда ваш счетная переменная и один раз в команде 'DO REPEAT '. Просто измените один из них. (2) Удалите "/" в команде 'IF'. –