Копирование переменной между наборами данных SPSS с использованием синтаксиса

#spss

#spss

Вопрос:

ОТРЕДАКТИРОВАНО на основе отзывов…

Есть ли способ скопировать переменную из одного открытого набора данных в другой в SPSS? Я попытался создать переменную scratch, которая фиксирует значение переменной, и использовать эту переменную scratch в команде вычисления в следующем наборе данных:

 DATASET ACTIVATE DataSet1.
COMPUTE #IDSratch = ID.
Dataset Activate DataSet2.
Compute ID = #IDScratch.
  

Это не удается, потому что активация Dataset2 приводит к удалению переменной scratch из памяти.

Сопоставление файлов и / или синтаксис ЗВЕЗДООБРАЗНОГО соединения будут работать для большинства сценариев, но в моем случае, поскольку Dataset1 содержит намного больше записей, чем Dataset2, И в обоих наборах данных нет совпадающих ключей, это приводит к дополнительным записям.

Мой первоначальный вопрос был «Существует ли простой, прямой способ копирования переменной между наборами данных?» и ответ по-прежнему заключается в том, что объединение файлов с помощью синтаксиса является лучшим / единственным методом при использовании синтаксиса.

Комментарии:

1. Когда вы создаете свою переменную scratch, вы создаете ее в активном наборе данных — она не существует ни в одном другом наборе данных. Единственный способ прикрепить данные из одного набора данных к другому, как вы хотите, — это сопоставить файлы — никакие обращения не будут добавлены, если вы все сделаете правильно… Пожалуйста, добавьте описание наборов данных ( немного примеров данных тоже помогут), чтобы мы могли понять проблему и предложить подходящее решение.

2. из вашего редактирования не ясно, ищете ли вы ответ? если это так, см. Мой комментарий выше — мы, вероятно, можем помочь с синтаксическим решением, но только если вы предоставите описание структуры данных пример

Ответ №1:

Начиная с версии SPSS 21.0, STAR JOIN команда (см. Документацию здесь) позволяет использовать синтаксис SQL для объединения наборов данных. Таким образом, в принципе, вы можете получить только нужные переменные из каждого набора данных.

Предположим, что ваш первый набор данных называется data_1 и имеет id и var_1a . Ваши вторые данные называются data_2, имеют то же id самое и var_2a ; и вы просто хотите перейти var_2a к первому набору данных. Если оба набора данных открыты, вы можете запустить:

 dataset activate data_1.
STAR JOIN
  /SELECT t0.var_1a, t1.var_2a
  /FROM * AS t0
  /JOIN 'data_2' AS t1
    ON t0.id=t1.id
  /OUTFILE FILE=*.
  

Приведенная выше ссылка содержит множество примеров объединения переменных файлов, сохраненных на вашем компьютере.

Комментарии:

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

2. Ой, хорошо. Я перечитал это, и теперь я понял, что вы сказали. Похоже, вы правы

3. Спасибо вам обоим. Я использовал OMS для создания нескольких наборов данных из одного набора данных, который имел уникальные ключи, необходимые для автоматического экспорта OMS-datasets в базу данных SQL. В итоге оказалось проще выполнить это сопоставление вне SPSS. Приветствия