Материал подготовлен Кириллом Орловым на основе версий 14-15

В SPSS 14 впервые введена возможность одновременно держать открытыми более одного файла данных. Речь идет о работе с несколькими файлами в рамках одной и той же сессии. До этого в SPSS была только возможность запускать новую сессию, не закрывая старой, но эти сессии оставались не связанными друг с другом. Теперь же, нововведение позволяет затевать переход и даже перекличку между несколькими файлами данных, причем не только вручную, но и специальными командами.

Начиная с версии 15 можно также управлять несколькими окнами результатов (Output Viewer) с помощью специальных команд. До этого вы хотя и могли держать открытыми несколько окон результатов, но не могли управлять ими через синтаксис. Команды по управлению окнами результатов (OUTPUT-команды) и команды по управлению наборами данных (DATASET-команды; отныне открытый файл данных в SPSS принято называть "набор данных", dataset) похожи. Однако поведение DATASET-команд имеет свои нюансы и выглядит более сложным, в связи с чем правильнее будет сначала познакомиться с OUTPUT-командами, а потом с DATASET-командами.

Управление окнами результатов: OUTPUT-команды

Вы можете:

  • Синтаксисом открывать и сохранять файлы результатов (.SPO-файлы)
  • Создавать новые, пустые окна результатов
  • Направлять продуцируемые результаты в нужное вам окно результатов

Каждое окно результатов имеет в текущей сессии свое имя. Не следует путать имя .SPO-файла и имя окна. Имя файла – это имя, под котором результаты хранятся или могут быть сохранены на жестком диске, это имя, под которым документ регистрируется в операционной системе. Имя окна результатов существует только внутри SPSS и действительно только в течение сессии. SPSS различает свои окна результатов по их именам, а не по именам .SPO-файлов. Имя окна можно видеть, в квадратных скобках, вверху окна "на синей полоске", рядом с именем файла.

OUTPUT NEW

Создает новое пустое окно результатов и делает его рабочим (активным). Рабочее окно это то, куда будут посылать свои результаты последующие процедуры (статанализ, графики и проч.). Рабочим в каждый момент может быть только одно окно. SPSS автоматически присваивает имя окну, но вы можете присвоить имя по желанию и/или выбрать тип окна – Viewer или Draft Viewer. Например,

OUTPUT NEW NAME=myname TYPE=DRAFT.
OUTPUT NAME имя

Присваивает/изменяет имя окну, которое сейчас рабочее. Если окон нет, создаст его и поименует окно. Если такое имя уже есть у другого окна, отберет его у него (то окно получит новое имя автоматом), - так же поступают OUTPUT NEW и OUTPUT OPEN.

OUTPUT ACTIVATE имя

Делает окно с данным именем рабочим окном. Рабочее окно распознать можно по зеленому крестику. Есть и кнопка (designate window) – она всегда была в SPSS – кликом мышки сделать окно рабочим.

OUTPUT CLOSE имя или * или ALL

Закрывает (не сохраняет на жесткий диск) окно с данным именем, или рабочее окно (*), или все окна. Имена закрываемых окон высвобождаются и могут использоваться вновь. При закрытии рабочего окна статус рабочего окна переходит к самому старому окну.

OUTPUT OPEN

Открывает существующий .SPO-файл и делает его рабочим окном. Вы должны указать имя файла и, необязательно, имя для окна: OUTPUT OPEN FILE = 'c:\results\myfile.spo' NAME = myname. Один и тот же файл нельзя держать открытым в нескольких окнах.

OUTPUT SAVE

Сохраняет окно результатов как .SPO-файл (или .RTF-файл, если это draft output). Укажите имя файла для сохранения и, опционально, имя окна, которое сохранить: OUTPUT SAVE OUTFILE = 'c:\results\myfile.spo' NAME = myname. По умолчанию имени окна сохраняется рабочее окно (то же, что NAME= *).

OUTPUT DISPLAY

Информационная команда, показывает вам список существующих сейчас окон результатов, с отметкой, какое из них рабочее.

Управление окнами ("наборами") данных: DATASET-команды

Вы можете:

  • Иметь открытыми несколько файлов данных (.SAV-файлы)
  • Создавать новые, пустые окна данных без закрытия старых.
  • Копировать набор данных в новое окно
  • Направлять выводимые процедурами данные в нужное вам существующее или пока не существующее окно данных.

Окно данных это "набор данных". Каждый набор данных имеет в текущей сессии свое имя. Не следует путать имя .SAV-файла и имя набора. Имя файла – это имя, под которым данные хранятся или могут быть сохранены на жестком диске, это имя, под которым документ регистрируется в операционной системе. Имя набора данных существует только внутри SPSS и действительно только в течение сессии. SPSS различает свои наборы данных по их именам, а не по именам . SAV-файлов. Имя набора можно видеть, в квадратных скобках, вверху окна "на синей полоске", рядом с именем файла.

DATASET-команды в общем похожи на OUTPUT-команды, но их больше, и главное, в некоторых аспектах их поведение отличается и представляется более сложным. Назовем основные отличия:

  • Набор данных может быть безымянным (с окном результатов это невозможно), т.к. SPSS не присваивает набору имя автоматически (если вы создали или открыли набор через синтаксис). Имя даете ему всегда вы.
  • Один и тот же .SAV-файл можно держать открытым как разные наборы (со .SPO-файлом это невозможно). Попытка сохранить на жесткий диск разные наборы под именем одного файла вызовет не ошибку, а лишь предупреждение, и сохранит их как файлы с производными именами.
  • Рабочий (активный) набор – тот с которым настроен работать сейчас процессор – может быть не всегда тот же набор, окно которого помечено крестиком (designated window). Дополнительная трудность происходит от того, что версии SPSS (14.0, 15.0, 15.0.1.1) ведут себя в этом (и некоторых других моментах) не совсем одинаково, что связано с продолжающимся процессом доработки и доотладки программы ее инженерами. Мы не будем обсуждать тут эти особенности версий.

Когда вы открываете .SAV-файл через меню или создаете новый пустой набор (нажимаете NEW – DATA), "это" становится очередным набором данных, причем рабочим (активным) набором: вы можете сразу работать с ним через меню или синтаксис. SPSS присваивает ему имя. Рабочий набор может быть в каждый момент только один.

Если же вы приглашаете набор через синтаксис (открываете его такими командами как GET FILE или GET TRANSLATE; создаете пустой набор командой NEW FILE; или вводите данные такими командами как DATA LIST или INPUT PROGRAM), поименования не происходит: новоявленный набор хотя и активен (вы можете работать с ним), но безымянен. Вы можете присвоить ему имя (команда DATASET NAME) когда хотите, или не присваивать. Только надо помнить, что безымянный набор незащищен от закрытия последующими командами. Какими? (1) Командами, открывающими/создающими/вводящими какой-либо еще набор; (2) Командой DATASET ACTIVATE, активирующей какой-либо другой открытый набор; (3) Командой DATASET CLOSE, закрывающей один или все наборы. DATASET CLOSE закрывает безымянный набор в случае, если он сейчас не рабочий.

Простой пример:

GET FILE ‘myfile1.sav’.
GET FILE ‘myfile2.sav’.
NEW FILE.

Здесь три набора данных последовательно замещают друг друга, т.к. ни один из них не имеет имени. Чтобы сберечь открытым, скажем, набор с данными файла myfile1.sav, вы должны назвать его, поставив DATASET NAME имя после 1-й команды (пока он еще является рабочим).

Еще простой пример:

GET FILE ‘myfile1.sav’.
DATASET NAME myset1.
GET FILE ‘myfile2.sav’.

Если после этого вы ткнули мышкой в первый набор (myset1), то любая последующая команда (например COMPUTE) закроет второй, безымянный, набор. Дело в том, что выбирая набор мышкой, вы делаете его рабочим. Эта смена рабочего набора осуществится, когда в процессор поступит дальнейшая команда. Вы скомандуете COMPUTE x=1, но перед ней SPSS внутренне вставит DATASET ACTIVATE myset1, – именно то что вы сделали, ткнув мышкой в набор myset1. А так как второй набор был безымянным, он, став нерабочим, закрылся командой DATASET ACTIVATE.

DATASET NAME имя

Присваивает/изменяет имя набору данных, который сейчас рабочий. Если такое имя уже есть у другого набора, отберет его у него (тот набор закроется). Опционально вы можете заказать сделать рабочий набор и помеченным крестиком (designated window); помеченный набор данных это тот, переменные которого должны присутствовать, после данной команды, в диалоговых окнах меню. Скомандуйте DATASET NAME имя WINDOW=FRONT. (SPSS допустили возможность рассогласования статуса "рабочий набор" и "помеченный набор" прежде всего, очевидно, в целях экономии ресурсов компьютера. Но в разных версиях программы эффект приведенного синтаксиса к сожалению различается.)

DATASET ACTIVATE имя

Делает набор с данным именем рабочим набором. Закрывает какой-либо безымянный набор. Эта команда обладает той же возможностью как и предыдущая сделать набор "помеченным", с помощью WINDOW=FRONT.

DATASET DECLARE имя

Заявляет новый набор под данным именем. Набор (в отличие от созданного командой NEW FILE) существует пока только как имя и не "реален" до тех пор, пока в него не будут выведены данные из какой-либо процедуры.

Пример.

DATASET DECLARE corrmx.
CORRELATIONS var1 var2 /MATRIX=OUT(corrmx).

Набор станет виден, получив данные из процедуры CORRELATIONS. При этом он не станет автоматически рабочим.

Кстати, в MATRIX=OUT можно было бы указать и любой уже существующий набор, а также, как и в прежних версиях SPSS, имя файла, кличку файла (так наз. file handle) или *. Звездочка, как известно, всегда означала "вывести в рабочий файл, заменив его". Сейчас она в данном контексте будет означать не "вывести в рабочий набор, заменив его" (как можно бы подумать), в "вывести в новый, безымянный набор", причем он станет рабочим. Таков теперь смысл звездочки в синтаксисе процедуры, выводящей из себя данные.

При DATASET DECLARE вы можете указать WINDOW=FRONT, чтобы сделать набор помеченным крестиком, когда в него выведутся данные. А можете указать WINDOW=HIDDEN. В этом случае набор, получив данные, окажется скрытым, у него не будет окна (это бережет компьютерные ресурсы), но вы можете работать с ним через синтаксис. Скрытый набор уже невозможно сделать "открытым", но вы можете снять с него видимую копию командой DATASET COPY.

DATASET COPY имя

Создает копию рабочего набора и дает ей это имя (если имя уже занято неким другим набором, отбирает его; и закрывает тот набор, если это был третий, не рабочий набор). Рабочим остается прежний набор. Данные копируются такими, какие они есть к данному моменту. Если в рабочем наборе сейчас имеются ожидающие исполнения преобразования, то DATASET COPY исполняет их, прежде чем скопировать данные. (Подобно же, кстати, поступят и команды, переносящие статус рабочего набора на другой.) При этой команде тоже можно затребовать WINDOW=FRONT или WINDOW=HIDDEN.

DATASET CLOSE имя или * или ALL

Закрывает и/или лишает имени набор(ы). Эта команда запутаннее прочих, и ее эффект дадим в виде удобной таблички:

DATASET CLOSE имя

лишает данный набор имени, если он рабочий, или закрывает (уничтожает) его, если он нерабочий или лишь заявлен

ПЛЮС

закрывает незащищенный (безымянный) набор, если такой есть среди наборов и он нерабочий

DATASET CLOSE * (звездочка означает: "рабочий набор")

лишает имени набор, который сейчас рабочий

DATASET CLOSE ALL

закрывает все наборы, кроме рабочего

DATASET DISPLAY

Информационная команда, показывает вам список существующих сейчас наборов данных, с отметкой, какой из них сейчас рабочий.