Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / Rost SPSS.doc
Скачиваний:
59
Добавлен:
15.05.2015
Размер:
8.1 Mб
Скачать

2.5.3. КомандаCount

Команда СOUNTподсчитывает для каждого объекта (для строки матрицы) число появлений указанных в ней кодов в заданном списке переменных и размещает результат в новую переменную или заменяет содержимое существующей.

В команде указывается имя переменной, куда будет заноситься результат подсчета, затем, после обязательного знака «=», приводится список переменных, для которых нужно вести подсчет, и далее в круглых скобках приводится список значений переменных, число которых следует пересчитать. Значения строковых переменных должны быть заключены в апострофы. Ключевое слово SYSMISиспользуется для подсчета системных отсутствующих значений;MISSINGпозволяет подсчитать все отсутствующие значения – и пользовательские, и системные. Команда допускает также ключевые словаLOWEST,HIGHESTиTHRU. В отличие от командыRECODE команда подсчета значений в переменных при их отсутствии присваивает 0 в результирующую переменную.

Пример. Пусть нам необходимо вычислить число разумных вариантов решения проблемы островов (неальтернативный вопрос 7 анкеты о Курильских островах), а затем подсчитать число ответов на все неальтернативные вопросы анкеты.

COUNT nofvari = v7s1 to v7s7 (1 thru 11)/

nofans = v3s1 to v3s8 (1 thru 8) v5s1 to v6s8 (1 thru 8).

Пример. По результатам сессии (объекты – студенты, переменные – результаты экзаменов по математике (M), микроэкономике (E), и социологии (S)) необходимо создать переменнуюM45, в которой будет число пятерок и четверок, встречающихся в перечисленных переменных. У троечников и двоечниковМ45примет значение 0. Значения новой переменнойМ45будут изменяться от 0 до 3. Тройка будет присвоена, если студент получал только 4 и 5 по всем 3 дисциплинам.

COUNT M45 = I M E S (4,5).

2.5.4. Условное выполнение команд

Команды DO IF, ELSE IF, ELSEиENDIF используются для преобразования переменных на подмножестве объектов, выбираемых по условию сразу несколькими командами. МеждуDO IFиENDIFможет быть написана целая программа. ПослеENDIFотбор по условию не действует.

Пусть, например, в файле «Курильские острова» требуется проинтервалировать возраст (v9), т. е. создать переменную, значениями которой будут номера соответствующего возрастного интервала. При построении интервалов должна учитываться разница в пенсионном возрасте для мужчин и женщин (табл. 2.2). Таким образом, при построении интервалов используется, также, переменная «пол» (v8).

Таблица 2.2 

Интервалы для мужчин и женщин

Интервалы возраста

1

2

3

4

5

Мужчины

до 18

До 33

до 45

До 60

> 60 лет

Женщины

до 18

До 33

до 45

До 55

> 55 лет

DO IF (v8 = 1).

RECODE v9 (LO THRU 18 = 1)(18 THRU 33 = 2)(33 THRU 45 = 3)(45 THRU 60 = 4)(60 THRU hi = 5) INTO w9.

ELSE IF (v8 = 2).

RECODE v9 (LO THRU 18 = 1)(18 THRU 33 = 2)(33 THRU 45 = 3)(45 THRU 55 = 4)(55 THRU HI = 5) INTO w9.

END IF.

Здесь для мужчин в переменной w9получаются одни интервалы возраста, для женщин – другие. Если бы не было неопределенных значений у переменнойv8, можно было бы вместо «ELSE IF (v8 = 2).» использовать просто «ELSE.».

Заметим, что команды RECODEиCOUNTнепосредственно не могут выполняться на подмножествах объектов, но с помощью командDO IFиEND IFможно организовать для необходимой подвыборки объектов их выполнение.

Напомним, что команды, запущенные без команды EXECUTE, накапливаются в памяти, но не выполняются (Transformations pendingв статусной строке). Так, командыIF, COMPUTE, COUNT, RECODE преобразуют данные не сразу после их запуска, а только после запуска командыEXECUTE. Поэтому в случае ошибки в командах, написанных междуDO IFиEND IF, успевает выполниться и попасть в память только командаDO IF. После исправления ошибки и повторного выполнения программы запущенных командDO IFоказывается больше, чемEND IF, и появляется сообщение о новой ошибке. Для того чтобы справиться с этой ситуацией, после исправления ошибки, перед повторным запуском программы, сле­ду­ет выполнить отдельно команду

CLEAR TRANSFORMATIONS., которая очистит память от невыполненных команд.