* (Вопрос) Как добавить сноску внизу каждой таблицы, которая бы содержала число наблюдений, принятых к обработке (действительных наблюдений, valid cases)? * (Ответ) Размещён в SPSSX-L. Автор: rlevesque@videotron.ca, 04.01.2002. ******************************. * Сначала «простое» решение. ******************************. SET MPRINT=ON. DATA LIST LIST /id(F8) var1(F8). BEGIN DATA. 1 10 2 15 3 10 4 20 5 25 6 15 7 25 8 9 END DATA. LIST. SAVE OUTFILE='c:\\temp\\data.sav'. COMPUTE nvalid=(NMISS(var1)=0). COMPUTE aggrv = 1 . AGGREGATE /OUTFILE* /BREAK=nvalid /aggrv_1 = SUM(aggrv). DO IF nvalid=1. WRITE OUTFILE 'c:\\temp\\data.sps' /"DEFINE !sum_1()'Число действительных наблюдений ="aggrv_1"'!ENDDEFINE.". END IF. EXE. GET FILE='c:\\temp\\data.sav'. INCLUDE 'c:\\temp\\data.sps'. *General Tables. TABLES /FORMAT BLANK MISSING('.') /GBASE=CASES /FTOTAL= $t000001 "Total" /TABLE=var1 + $t000001 BY (STATISTICS) /STATISTICS count( var1( F5.0 )) cpct( var1( PCT5.1 ) 'Col %') /SORT=D var1 /caption=!sum_1 . ***END OF JOB. **################. Следующий вариант – обобщение (почти тот же синтаксис, но оформленный как макрос). **################. DATA LIST LIST /id(F8) var1(F8) var22(F8). BEGIN DATA. 1 10 1 2 15 2 3 10 4 4 20 . 5 25 5 6 15 4 7 25 . 8 . 5 9 . . END DATA. LIST. SAVE OUTFILE='c:\\temp\\data.sav'. */////////////////. * Первый параметр namemac нужен для того, чтобы дать имя макросу, который будет содержать нужную подпись. – А.Б. DEFINE !getval(namemac=!TOKENS(1) /vars=!CMDEND) COMPUTE nvalid=(NMISS(!vars)=0). COMPUTE aggrv = 1 . AGGREGATE /OUTFILE* /BREAK=nvalid /aggrv_1 = SUM(aggrv). DO IF nvalid=1. !LET !tmp=!QUOTE(!CONCAT('DEFINE !',!namemac,'()')) WRITE OUTFILE 'c:\\temp\\data.sps' /!tmp "'Число действительных наблюдений ="aggrv_1"'!ENDDEFINE.". END IF. EXE. GET FILE='c:\\temp\\data.sav'. INCLUDE FILE='c:\\temp\\data.sps'. !ENDDEFINE. */////////////////. *******************. *** Пример 1 *****. *******************. GET FILE='c:\\temp\\data.sav'. * Вызовем макрос, который создаст ещё один макрос nb1, который будет содержать подпись. !getval namemac=nb1 vars=var1. * Загрузим файл данных заново. GET FILE='c:\\temp\\data.sav'. TABLES /FORMAT BLANK MISSING('.') /GBASE=CASES /FTOTAL= $t000001 "Итого" /TABLE=var1 + $t000001 BY (STATISTICS) /STATISTICS count( var1( F5.0 ) 'Частота') cpct( var1( PCT5.1 ) '% по столбцу') /SORT=D var1 /caption=!nb1. *******************. *** Пример 2 *****. *******************. GET FILE='c:\\temp\\data.sav'. * Вызовем макрос, который создаст подпись с числом действительных наблюдений одновременно для переменных var1 и var22. !getval namemac=nb2 vars=var1,var22. * Загрузим файл данных заново. GET FILE='c:\\temp\\data.sav'. TABLES /FORMAT BLANK MISSING('.') /GBASE=CASES /FTOTAL= $t000001 "Итого" /TABLE=var1 + $t000001 BY (STATISTICS) /STATISTICS count( var1( F5.0 ) 'Частота') cpct( var1( PCT5.1 ) '% по столбцу') /SORT=D var1 /caption=!nb2. * Разумеется, команда TABLES может быть заменена любой подходящей командой.