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

  • Есть список имен и список меток переменных. Вы хотели бы создать синтаксис, который назначает метки для соответствующих переменных (VARIABLE LABELS);
  • Есть списки старых и новых имен переменных, и вам необходимо создать синтаксис, который бы переименовал переменные в соответствии с этими правилами;
  • Есть перечень значений некоторой категориальной переменной и перечень меток этих значений. Необходимо назначить метки значений (с помощью команды VALUE LABELS);
  • Есть набор границ (диапазонов) значения числовой переменной и соответствующие им значения и метки для создаваемой категориальной переменной. Необходимо разработать синтаксис, создающий категориальную переменную на основе заданных диапазонов, и описывающий ее.

В ситуации, когда указанные списки достаточно длинные, простое их копирование в редактор синтаксиса с последующим ручным «превращением» этих заготовок в валидный синтаксис, может быть утомительным.

К счастью, функции работы со строками Excel помогут автоматизировать разработку синтаксиса, так, что ничего вручную писать не потребуется. В следующем примере мы увидим, как с помощью одной лишь функции =СЦЕПИТЬ(), или, в английском интерфейсе Excel, =CONCATENATE(), мы сможем быстро назначить метки огромному списку (сотен или тысяч) значений. Для наполнения примера мы возьмем синтаксис назначения меток округов США к кодам FIPS (см. оригинал http://spsstools.net/en/syntax/syntax-index/standard-data-files/create-labels-with-common-names-for-us-county-fips-codes/). Как мы могли бы получить этот синтаксис, если бы коды округов и метки (названия) округов изначально имелись бы в Excel-файле, таком как приведенный ниже?

 

Value labels (metadata) in Excel

Рисунок 1. Исходные метаданные (метки значений) на листе Excel

 

Предположим, в SPSS коды округов находятся в строковой переменной county (строковой, так как нам необходимо сохранить ведущие нули). В SPSS синтаксис назначения меток должен выглядеть примерно так:

VALUE LABELS county	
    '01001' 'Autauga'	
    '01003' 'Baldwin'
last code’ ‘last label.

Мы очень быстро можем создать «костяк» данного синтаксиса, введя в новый столбец Excel следующую формулу:

=СЦЕПИТЬ("    '";B2;"' '";C2;"'")

В англоязычном интерфейсе Excel функция будет называться иначе:

=CONCATENATE("    '";B2;"' '";C2;"'")

Суть этой формулы – в создании нового строкового значения по следующим правилам:

  • Значение начинается с 4-х пробелов (вообще говоря, они не обязательны и используются здесь лишь для визуальной отбивки синтаксиса).
  • Затем вставляется одинарная кавычка. И пробелы, и одинарная кавычка помещается между двойными кавычками, так как для Excel это – текстовое значение.
  • Затем вставляется значение кода округа из ячейки B2.
  • Вставляется закрывающая кавычка для текстового значения кода, затем пробел, и снова открывающая кавычка.
  • Вставляется метка значения из ячейки C2.
  • Наконец, вставляем еще одну одинарную кавычку – описание метки закончено.

Соединяемые фрагменты строки перечисляются, по правилам Excel, точкой с запятой.

После того, как мы ввели эту формулу в ячейку D2, в ней отобразится результирующая строка:
    ‘1001’ ‘Autauga’

Осталось «протянуть» данную формулу вниз до конца списка. И это делается очень быстро, независимо от количества округов и их названий. Excel автоматически изменит ссылки в копируемой формуле. В итоге лист будет выглядеть примерно так:

 

Value labels in Excel wrapped to syntax form

Рисунок 2. Определения меток значений, оформленные по правилам синтаксиса SPSS с помощью функции СЦЕПИТЬ в Excel

 

Теперь скопируем все строки из вновь созданного столбца D, начиная со второй строки, и вставим их в Редактор синтаксиса SPSS.

Вставленные строки являются частью спецификации команды VALUE LABELS. Нам остается поместить перед ними начало этой команды: VALUE LABELS county.

Проследите, чтобы между добавленной строкой и строками, вставленными из Excel, не было точки или пустой строки.

Теперь после всех меток значений поместим точку (.) . Это будет означать окончание команды VALUE LABELS. Так должен выглядеть финальный результат в Редакторе синтаксиса:

VALUE LABELS county
    '01001' 'Autauga'
    '01003' 'Baldwin'
    '01005' 'Barbour'
    '01007' 'Bibb'
    '01009' 'Blount'
    '01011' 'Bullock'
    '01013' 'Butler'
    '01015' 'Calhoun'
    '01017' 'Chambers'
    '01019' 'Cherokee'
    '01021' 'Chilton'
    '01023' 'Choctaw'
    '01025' 'Clarke'
    '01027' 'Clay'.

Теперь команда готова к запуску. Запустите команду и проверьте, что SPSS заполнил метки значений для переменной county. Это можно сделать в представлении Вид Переменные (Variable View) Редактора данных SPSS:

 

Value labels in SPSS data editor

Рисунок 3. Заданные метки значений в Редакторе данных SPSS

 

Вот и все. Вкратце повторим основные действия:

  1. Мы начали работу с открытия файла с метаданными в Excel. Эти метаданные должны быть определённым образом структурированы.
  2. Мы разобрали ситуацию и продемонстрировали необходимые шаги для создания на основе метаданных из Excel валидного синтаксиса SPSS. Мы ограничились в примере лишь функцией =СЦЕПИТЬ(), но вам, возможно, придут в голову кейсы, в которых может оказаться полезным применить и другие функции Excel.
  3. Действия включали 3 основных шага: 1 – ввести формулу, которая формирует строку синтаксиса на основе фрагментов метаданных из разных столбцов, 2 – протянуть эту формулу, чтобы формула автоматически создала значения для остальных строк в файле, 3 – выделить и вставить результирующие строки в Редактор синтаксиса SPSS и, при необходимости, завершить спецификацию синтаксиса вводом начальных или завершающих элементов команды.

«Бонусом» такого подхода к разработке синтаксиса на основе Excel является удобный «интерфейс» для последующего добавления/правки спецификаций синтаксиса. Изменение имени переменной, значения или его метки в исходном столбце приведет к автоматическому обновлению результата функции конкатенации. Таким образом, после внесения изменений в Excel, у вас будут под рукой готовые обновленные фрагменты синтаксиса, которые останется вставить в Редактор синтаксиса SPSS. -

Подумайте, как бы вы могли автоматизировать свою работу с помощью этого нехитрого приёма!