2014-11-04 1 views
3

Представьте набор данных с парами участников («Пара» 1-10), каждый из которых имеет уникальный идентификатор («Лицо» 1 или 2). Каждый из этих лиц в паре имеет уникальную ценность для некоторой переменной, назовите ее «Актер». Я хочу написать сценарий, который принимает значение «Актер» для индивидуума и помещает его в новую переменную для другого человека в паре «Партнер». Таким образом, каждый Человек (строка) будет иметь ценность для себя («Актер») и ценность своего партнера («Партнер»).Назначение значений партнеров для парных строк в SPSS

Метод, который я попытался включает в себя реструктуризацию:

SORT CASES BY Couple. 
CASESTOVARS 
    /ID=Couple 
    /GROUPBY=VARIABLE. 

COMPUTE Partner.1=Actor.2. 
COMPUTE Partner.2=Actor.1. 
EXECUTE. 

VARSTOCASES 
    /MAKE Person FROM Person.1 Person.2 
    /MAKE Actor FROM Actor.1 Actor.2 
    /MAKE Partner FROM Partner.1 Partner.2 
    /INDEX=Index1(2) 
    /KEEP=Couple 
    /NULL=KEEP. 

Теперь это прекрасно работает для небольших, гипотетического набора данных, который я создал. Тем не менее, я бы хотел, чтобы сценарий мог обрабатывать больше переменных без необходимости вручную вводить команды more/MAKE.

Что-то вроде этого?

for i in varlist[var=all] 
do 
VARSTOCASES 
/MAKE i FROM i.1 i.2 
/INDEX=Index1(2). 

Но это недопустимый код SPSS. Кто-нибудь знает, как я мог бы подстроить это?

Спасибо!

+1

Пожалуйста, отредактируйте свое название вопроса, чтобы описать конкретную проблему, с которой вы сталкиваетесь. «Расширенный синтаксис SPSS» будет довольно бессмысленным в результатах поиска для человека, который будет искать этот сайт в будущем, чтобы помочь с проблемой, с которой они сталкиваются. Ваш вопрос о SPSS известен из тегов, а также о том, что он связан с синтаксисом. Это оставляет единственное слово в вашем названии «Дополнительно», которое ничего не говорит ни о чем, что касается вопроса. Благодарю. –

ответ

3

Следующий код должен сделать трюк:

SORT CASES BY couple (A) Person (A). 
IF (couple = LAG(couple)) partner = LAG(actor). 

SORT CASES BY couple (A) Person (D). 
IF (couple = LAG(couple)) partner = LAG(actor). 

Объяснение: Прежде всего сортировать данные, установленные таким образом, что каждый актер сопровождается его партнером. Затем вы можете использовать LAG-функцию для копирования идентификатора актера (из верхней строки) в партнерскую переменную партнера (второй строки). Так как в SPSS нет подобной функции в SPSS (я ее вообще не замечаю), вы не можете напрямую копировать значение из второй строки в первую. Сначала вам нужно отсортировать переменную person в порядке убывания.

+1

Фантастический, очень умный. Похоже, что это работает, но только после запуска синтаксиса два раза. Есть ли способ заставить его работать после одного прохода? Спасибо за помощь! – smgmu

+1

Возможно, вам потребуется добавить команду EXECUTE после всей процедуры. В противном случае второй IF-Statement останется в ожидании до тех пор, пока вы не запустите команду, которая вызывает выполнение ожидающих команд. Это было в вашем случае, вероятно, первая команда SORT CASES, когда вы запускали синтаксис второй раз. – mirirai

Смежные вопросы