Я был очень рад познакомиться с макросами SPSS от этот вопрос. Я использую именно тот код, который был там предложен. См. Пример ниже. Я запустил этот код 26 декабря 2015 года, и он работал безупречно. Затем я внес изменения в другие части файла синтаксиса. Я не менял ни одного символа в приведенном ниже коде. Я попытался запустить все снова сегодня, и у меня возникла очень странная проблема. SPSS говорит примерно следующее для каждой подпрограммы:

Текст: макрос Команда: ЧАСТОТА
Неопределенное имя переменной, временная или системная переменная была указана в списке переменных, который принимает только стандартные переменные. Проверьте правописание и проверьте наличие этой переменной. Выполнение этой команды прекращается.

Затем он говорит следующее:

Ошибка №1. Название команды: текст
Первое слово в строке не распознается как команда SPSS Statistics. Выполнение этой команды прекращается.

Интересно, что весь вывод появляется именно там, где должен. Поэтому я не должен жаловаться, но это очень сбивает с толку. Я не понимаю, почему он не выдает никаких ошибок в первый раз, а затем дает мне ошибки при последующих попытках. Я использую SPSS 19 в Mac OS 10.8.5.

* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* Wakefulness condition.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

USE ALL .
COMPUTE filter_$=(include_analysis = 1 & group_rand = 0) .
FILTER BY filter_$ .
EXECUTE .

* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* !comp_dich
* This macro/text replacement device/string parser performs some basic comparisons using
* a dichotomous variable.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

DEFINE !comp_dich (!POS !CHAREND('/'))
!DO !i !IN (!1)
    FREQUENCIES
        VARIABLES=!i
        /ORDER=ANALYSIS .
    CROSSTABS
        /TABLES=!i BY gender
        /FORMAT=AVALUE TABLES
        /STATISTICS=MCNEMAR 
        /CELLS=COUNT EXPECTED ROW COLUMN TOTAL 
        /COUNT ROUND CELL .
    CROSSTABS
        /TABLES=!i BY vis_train
        /FORMAT=AVALUE TABLES
        /STATISTICS=MCNEMAR 
        /CELLS=COUNT EXPECTED ROW COLUMN TOTAL 
        /COUNT ROUND CELL .
    T-TEST GROUPS=!i(0 1) 
        /MISSING=ANALYSIS 
        /VARIABLES=/*
            age/*
            dose/*
            t_l_mean_am/*
            t_l_mean_pm/*
            threshold_am/*
            threshold_pm/*
            diff_thresh/*
            TDT_defaults_am/*
            TDT_defaults_pm/*
            TTC_am/*
            TTC_pm/*
            full_wake/*
            full_N1/*
            full_N2/*
            full_N3/*
            full_REM/*
            full_tst/*
            full_trt/*
            scan_wake/*
            scan_N1/*
            scan_N2/*
            scan_N3/*
            scan_REM/*
            scan_tst/*
            scan_trt/*
            peak_wake/*
            peak_N1/*
            peak_N2/*
            peak_N3/*
            peak_REM/*
            peak_tst/*
            peak_trt/*
            weigh_sws/*
        /CRITERIA=CI(.95) .
!DOEND
!ENDDEFINE .

* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* I call the !comp_dich macro/text replacement device/string parser.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

!comp_dich
    sx_rcps_cuneate_dtu_dich  /.

* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* Sleep condition.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

USE ALL .
COMPUTE filter_$=(include_analysis = 1 & group_rand = 1) .
FILTER BY filter_$ .
EXECUTE .

* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* I call the !comp_dich macro/text replacement device/string parser.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

!comp_dich
    sx_rcps_cuneate_dtu_dich  /.
2
Dante Picchioni 4 Янв 2016 в 16:52

3 ответа

Лучший ответ

Попробуйте удалить строку

* !comp_dich

Из:

* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* !comp_dich
* This macro/text replacement device/string parser performs some basic comparisons using
* a dichotomous variable.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

К сожалению, одна звездочка не комментирует вызов макроса, а только /*.

2
Jignesh Sutar 4 Янв 2016 в 15:52

Как правильно прокомментировал Джигнеш. Это не проблема для последних версий SPSS. Но я считаю, что стоит попробовать, потому что это было проблемой для более старых версий SPSS.

Насколько я помню, для синтаксиса макросов SPSS есть правило: не заканчивать строку именем макроса . Я предполагаю, что это могло быть причиной ошибки. Попробуйте переписать команду FREQUENCIES в две строчки. Например:

FREQUENCIES
    VARIABLES=!i /ORDER=ANALYSIS .

Это мое предположение, поскольку у меня нет данных, чтобы проверить это.

0
djhurio 4 Янв 2016 в 14:28

Перед тем как запустить код:

!comp_dich
    sx_rcps_cuneate_dtu_dich  /.

Попробуйте добавить к нему префикс SET MPRINT ON., то есть:

set mprint on.
!comp_dich
    sx_rcps_cuneate_dtu_dich  /.

Затем это должно помочь определить, какой оператор extacly вызывает проблему, вы увидите в своем выводе распечатку этого оператора, за которым следует сообщение об ошибке. Комбинация должна дать вам достаточно, чтобы изолировать проблему ...

Вероятно, судя по описанному вами сообщению об ошибке, указанная переменная не существует в данных или имеется другая синтаксическая ошибка.

2
Jignesh Sutar 4 Янв 2016 в 15:15