Создание фиктивных переменных
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 | * Вот универсальный макрос для создания двоичных (фиктивных, dummy) переменных. * Автор: rlevesque@videotron.ca, 28.12.2002. SET MPRINT=no. * Сохраните тело этого макроса в файле dumcode.sps. *////////////////////. DEFINE !DumCode(NomVar =!CharEnd ('/') /PreNam =!CharEnd ('/') /RefCat =!DEFAULT("НЕТ") !CharEnd ('/') /FPath =!CMDEnd) /* NomVar Имя номинальной переменной для которой требуется создать двоичные переменные */ /* PreNam Корень (первая часть) имени новых переменных */ /* RefCat Базовая категория (для неё не создаётся переменной) */ /* (не используйте параметр, если этого не требуется) */ /* FPath Полный путь и имя файла данных */ GET FILE=!FPath. *Ищем все категории. AGGREGATE /OUTFILE=* /BREAK=!NomVar /N_BREAK=N. STRING vname1 TO vname3 (A7). COMPUTE catvalue=!NomVar. COMPUTE vname1=RTRIM(LTRIM(STRING(catvalue,F8.0))). COMPUTE vname2=!QUOTE(!NomVar). COMPUTE vname3=CONCAT(!QUOTE(!EVAL(!PreNam)),vname1). DO IF catvalue<>!RefCat OR !QUOTE(!RefCat)="НЕТ". WRITE OUTFILE='c:\\temp\\define dum.sps' / 'COMPUTE ' vname3 '=(' vname2 '=' catvalue ').' / 'VALUE LABELS ' vname3 ' 0 "нет" 1 "да".'. END IF. EXECUTE. GET FILE=!FPath. INCLUDE 'C:\\temp\\define dum.sps'. EXECUTE. !ENDDEFINE. *////////////////////. * Пользователю не нужно знать количество категорий номинальной переменной при вызове макроса. * Категории могут быть равны 0 или любому положительному целому числу. * Категории не обязательно должны быть последовательными. * Используя команду INCLUDE, вы можете вызвать макрос всего двумя строками кода. INCLUDE 'c:\\temp\\dumcode.sps'. * Следующий пример создаёт двоичные переменные когда 1 является базовой категорией. !DumCode NomVar=jobcat /PreNam=job /RefCat=1 /FPath='C:\\Program Files\\SPSS\\employee data.sav'. * Следующий пример создаёт двоичные переменные когда 2 является базовой категорией. !DumCode NomVar=jobcat /PreNam=job /RefCat=2 /FPath='C:\\Program Files\\SPSS\\employee data.sav'. * Следующий пример создаёт двоичные переменные без базовой категории. !DumCode NomVar=jobcat /PreNam=job /FPath='C:\\Program Files\\SPSS\\employee data.sav'. *****************************. * Обработка пропущенных или отрицательных значений: * Системные или пользовательские пропущенные значения дают пропущенные значения для созданных двоичных переменных. * В силу внутренней специфики маркроса наличие отрицательных значений среди категорий * номинальной переменной не позволяет создать двоичные переменные. * Не делается проверок на то, что значения переменной NomVar являются действительно целыми числами. |
Related pages
...