2014-11-04 43 views
3

想象一下包含參與者對(「夫妻」1-10)的數據集,每個參與者都有唯一的標識符(「人」1或2)。一對中的每個人對某個變量都有唯一的值,稱之爲「Actor」。我想編寫一個腳本,爲個人提供「Actor」值,並將其放入一個名爲「Partner」的另一個人的新變量中。通過這種方式,每個Person(行)將爲他們自己(「Actor」)和他們的合作伙伴(「Partner」)賦值。在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的問題可以從標籤中得知,因爲它與語法有關。這就在您的標題「高級」中留下了唯一的詞,它不會告訴任何人該問題的關注。謝謝。 – 2014-11-04 18:08:54

回答

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函數將演員的ID(從上一行)複製到夥伴的(第二行)夥伴變量中。由於SPSS中沒有類似Follower的函數(我真的很想念它),所以不能直接將第二行的值複製到第一行。您必須首先按降序對人員變量進行排序。

+1

神奇,非常聰明。它看起來像這樣工作,但只在兩次運行語法之後。有一種方法可以在單次傳球后使其發揮作用嗎?感謝您的幫助! – smgmu 2014-11-04 20:22:20

+1

您可能需要在整個過程之後添加EXECUTE命令。否則,第二個IF語句將保持等待狀態,直到您運行一個導致執行未決命令的命令。當您第二次運行語法時,這可能是您的第一個SORT CASES命令。 – mirirai 2014-11-04 23:58:28