Создать наблюдения с недостающими категориями переменной
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | *(Вопрос) * Переменная stimcode имеет 3 уровня; переменная respcode, вроде как, имеет 4 уровня (от 1 до 4), * что соответствует 12 возможным комбинациям этих переменных (12 наблюдениям). * Однако, некторые уровни переменной respcode оказываются пропущенными. * Задача - восполнить наблюдения с недостающими уровнями. * Например, у меня есть следующие данные stimcode respcode rt N 128 1 128 2 128 3 128 4 129 1 129 2 129 3 129 4 130 2 130 3 130 4 * В данном случае нужно добавить следующее наблюдение: 130 1 0 0 * (Ответ) Размещён в SPSSX-L. Автор: rlevesque@videotron.ca, 11.8.2002. * Решение работоспособно для любых трёх уровней переменной stimcode, однако все они должны присутствовать в исходных данных. * Создадим данные для примера (заметьте, 3 наблюдения пропущены). NEW FILE. DATA LIST LIST /stimcode respcode rt N. BEGIN DATA 128 1 128 2 128 3 128 4 129 3 129 4 130 2 130 3 130 4 END DATA. SAVE OUTFILE='c:\\temp\\data file.sav'. * найдём 3 уникальных значения переменной stimcode. SORT CASES BY stimcode. AGGREGATE OUTFILE=* /PRESORTED /BREAK=stimcode /tmp 'не используется'=n. COMPUTE rt=0. COMPUTE n=0. * Создадим файл с 12-ю потенциальными наблюдениями переменной "filldata". LOOP respcode=1 TO 4. + XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=stimcode respcode rt n. END LOOP. EXECUTE. * сольём потенциальные наблюдения переменной 'filldata' с исходным файлом данных. ADD FILES FILE='c:\\temp\\temp.sav' /IN=filldata FILE='c:\\temp\\data file.sav'. SORT CASES BY stimcode respcode filldata. MATCH FILES FILE=* /BY stimcode respcode /FIRST=first. EXECUTE. * сохраним лишь те значения переменной "filldata", которые полезны для нас. SELECT IF first=1. * Уберём лишнее. ADD FILES FILE=* /DROP=filldata first. EXECUTE. |
Related pages
...