Пожалуйста, обратите внимание, что макрос ниже использует имена переменных Symptom1, Symptom2 и т.д.»вместо "Symptom01", "Symptom02" ...
Сначала создавая некоторые выборочные данные для работы на:
data list list/Symptom1 to Symptom18.
begin data
1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1
1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0
0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0
1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0
0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1
1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1
1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0
0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1
1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0
end data.
Теперь определение макроса с тремя петлями:
EDIT - эта версия объясняет повторяющиеся комбинации симптомов
define AllCombsOf3()
!do !vr1=1 !to 18
!do !vr2=!vr1 !to 18
!do !vr3=!vr2 !to 18
!if (!vr2<>!vr1 !and !vr2<>!vr3) !then
compute !concat("C_",!vr1,"_",!vr2,"_",!vr3)= !concat("Symptom",!vr1)=1 & !concat("Symptom",!vr2)=1 & !concat("Symptom",!vr3)=1 .
!ifend
!doend
!doend
!doend
!enddefine.
Запуск макроса и отображения хотел результаты:
AllCombsOf3.
means C_1_2_3 to C_16_17_18.
EDIT 2 - новый макрос для четыре симптома версии
define AllCombsOf4()
!do !vr1=1 !to 18
!do !vr2=!vr1 !to 18
!do !vr3=!vr2 !to 18
!do !vr4=!vr3 !to 18
!if (!vr2<>!vr1 !and !vr2<>!vr3 !and !vr3<>!vr4) !then
compute !concat("C_",!vr1,"_",!vr2,"_",!vr3,"_",!vr4)=
!concat("Symptom",!vr1)=1 & !concat("Symptom",!vr2)=1 &
!concat("Symptom",!vr3)=1 & !concat("Symptom",!vr4)=1 .
!ifend
!doend !doend !doend !doend
!enddefine.
AllCombsOf4.
means C_1_2_3_4 to C_15_16_17_18.
Спасибо большое! Работал потрясающе! Только один последний вопрос, если я попытаюсь найти комбинации из 4 симптомов, как бы я это сделал? Снова большое спасибо – Andre
Я добавил версию макроса для 4 комбинаций симптомов. Также для версии 3 симптомов - ** используйте отредактированный макрос **, поскольку он не содержит повторяющихся комбинаций. –