Оглавление

  1. SPSS игнорирует эту строчку кода!
  2. Синтаксис работает нормально, будучи запущен вручную, но не работает, когда вызывается через INCLUDE (ссылка на страницу блога)
  3. Конструкция DO IF … ELSE …END IF даёт неправильные результаты!
  4. Почему «исчезают» векторные переменные?
  5. Процедура SELECT IF неправильно отбирает наблюдения!
  6. Файл уже используется (File is already in use)
  7. Ожидание данных (Waiting for more inline data)

Распространённые ошибки и пути их устранения

SPSS игнорирует эту строчку кода!

Убедитесь, что в конце предыдущей команды стоит точка (признак конца команды).

Если в статусной строке написано Transformations Pending (отложенные вычисления), запустите Проведение отложенных вычислений. Изучите сообщения об ошибках и команды, которые отображены в логах окна результатов.

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

Конструкция DO IF … ELSE …END IF даёт неправильные результаты!

Возможно, вы найдете решение в следующем примере: Пропущенные значения и конструкция DO IF.

Почему «исчезают» векторные переменные?

Когда вы впервые создаете вектор, скажем, с помощью VECTOR a(20F8.0) /b=var1 TO var20., вы можете сослаться на каждый элемент этого вектора внутри цикла LOOP, например, таким образом:

LOOP cnt=1 TO 20.
- COMPUTE a(cnt) = cnt * 2.
- COMPUTE b(cnt) = cnt +15.
END LOOP.

Как только отработает процедура EXECUTE. (или любая другая процедура, осуществляющая проход по данным), ранее определенные вектора более недоступны. Для доступа к ним вам необходимо заново их определить. Однако на этот раз команда, задающая вектор, будет другой, поскольку интересующие вас переменные a1 TO a20 и var1 TO var20 уже присутствуют в файле.

Вам надо использовать команду VECTOR a=a1 TO a20 /b=var1 TO var20.

Процедура SELECT IF неправильно отбирает наблюдения!

Проверьте, правильно ли вычисляется фильтрующая переменная, например, с помощью отдельной команды COMPUTE. Если все правильно, поставьте инструкцию EXECUTE. перед SELECT IF. См. также совет Когда следует использовать команду EXECUTE?

Файл уже используется (File is already in use)

Вопрос: Когда я стараюсь сохранить файл данных .sav поверх существующего, используя синтаксис, я получаю сообщение о том, что файл с таким именем уже существует, и в результате SPSS сохраняет файл с новым именем, помещая номер в конец имени, например:

SAVE OUTFILE= 'Total.sav'.

приводит к тому, что данные сохраняются в файл total_1.sav.

Я действительно хочу сохранить данные поверх старого файла. Можно ли как-то обойти эту «предупредительность» SPSS?

Ответ: Такая проблема существует в версиях 10.xx и, вроде бы, иногда в версии 11. Перед тем, как пробовать решения, данные ниже, попробуйте удалить файлы, которые вы неудачно попытались сохранить (т.е. total.sav и total_1.sav). (только сначала сделайте резервную копию всех файлов, ОК?) Если они удалились, всё нормально. Если нет, вам надо будет сначала перезапустить перезапустить SPSS.

*** Возможное решение № 1.
CACHE.
EXECUTE.
SAVE OUTFILE= 'Total.sav'.

*** Возможное решение № 2.
SAVE OUTFILE='c:\temp.sav'.
EXECUTE.
SAVE OUTFILE= 'Total.sav'.
EXECUTE.
ERASE FILE='c:\temp.sav'.

Ожидание данных (Waiting for more inline data)

Такая ошибка случается, если вы используете конструкцию BEGIN DATA … END DATA для ввода данных и команда END DATA начинается не с первого символа новой строки.

Чтобы избавиться от этого сообщения в области обработки (Processor Area) статусной строки, поставьте курсор на команду END DATA и запустите её.