#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. Приветствия