Отметить наблюдения, в которых переменные содержат повторяющиеся значения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | * (Вопрос). Существует ли способ отметить наблюдения с одинаковыми значениями по крайней мере, в 2 переменных? То есть, хотелось бы в результате иметь маркерную переменную с "1", если есть, по крайней мере, одна пара одинаоквых значений и "0", если одинаковых значений нет. Причина, по которой я спрашиваю это - в моих все данные примерно такого вида: 7.1439583 или 12.93878974. Весма утомительно осуществлять поиск похожих значений даже через функцию COUNT. Будут какие-то идеи? * (Ответ) Размещён в SPSSX-L, автор: Raynald Levesque, 30.10.2002. * Примеч.: настоящее пиршество для *любителей макросов* (рекурсивный макрос - А.Б.). DATA LIST LIST /var1 var2 var3 var4. BEGIN DATA 1 2 3 3 1 2 3 4 1 1 2 2 1 1 1 1 3 3 2 2 . . 1 2 4 1.7 2 1.7 END DATA. LIST. * Отмечаем накопленной суммой все наблюдения, где хоть какие-то переменные имеют хоть какие-то идентичные значения. *////////////////////. DEFINE !test(listvar=!CMDEND) !IF (!listvar !NE !NULL) !THEN !LET !testval=!HEAD(!listvar) !LET !other=!TAIL(!listvar) !DO !var !IN (!other) - COMPUTE flag=SUM(!var = !testval, flag). !DOEND !test listvar=!other. !IFEND !ENDDEFINE. *////////////////////. SET MPRINT=yes. COMPUTE flag=0. !test listvar=var1 var2 var3 var4. SET MPRINT=no. COMPUTE flag2=MIN(flag,1). EXECUTE. * Flag2 = 1 когда любые из переменных var1 - var4 имеют идентичные значения. |
Related pages
...