我想做一些我認爲很簡單的事情。 我的(模擬)數據如下所示:滯後於列/變量SPSS
data list free/totalscore.1 to totalscore.5.
begin data.
1 2 6 7 10 1 4 9 11 12 0 2 4 6 9
end data.
這些是總分積累在多個試驗(在該模擬數據,從1到5)。現在我想知道每個試驗中獲得的分數。換句話說,我想從n + 1試驗中減去n試驗中的值。 最簡單的語法是這樣的:
COMPUTE trialscore.1 = totalscore.2 - totalscore.1.
EXECUTE.
COMPUTE trialscore.2 = totalscore.3 - totalscore.2.
EXECUTE.
COMPUTE trialscore.3 = totalscore.4 - totalscore.3.
EXECUTE.
等等...... 這樣的結果是這樣的:
但是,當然,這是不可能的,對200多個變量做這個並不有趣。 我試圖用向量來寫語法和DO REPEAT如下:
COMPUTE #y = 1.
VECTOR totalscore = totalscore.1 to totalscore.5.
DO REPEAT trialscore = trialscore.1 to trialscore.5.
COMPUTE #y = #x + 1.
END REPEAT.
COMPUTE trialscore(#i) = totalscore(#y) - totalscore(#i).
EXECUTE.
但它不工作。 任何幫助表示讚賞。
Ps。我研究過使用LAG,但是它遍歷行,而我需要它一次超過1列。
嗨horace_vr,非常感謝你的幫助。 我想我需要將「trialscore」與「totalscore」交換以便代碼正常工作。 所以基本上,你的建議是轉置數據,然後仍然使用滯後。還有其他解決方案嗎?我非常好奇索引/腳標如何在SPSS語法中起作用。 另外,如果我沒有唯一的記錄標識符,該怎麼辦? – TVV
@TVV:你是正確的交換;我編輯了代碼,因此不再需要交換。我還添加了關於如何創建記錄標識符的一行。我不知道如何解決它。如果你使用矢量,由於需要總是「查看」前一個變量中的數據,你總會得到一些警告,我認爲這不是一種聰明的工作方式(最終你會忽略警告,並在某些時候,你也可能最終出現錯誤;))。你也可以嘗試Python,但我認爲這會使事情過於複雜。我的代碼很短,你只需要在一個地方進行編輯;) –
@TVV:你是正確的交換;我編輯了代碼,因此不再需要交換。我還添加了關於如何創建記錄標識符的一行。我不知道如何解決它。如果你使用矢量,由於需要總是「查看」前一個變量中的數據,你總會得到一些警告,我認爲這不是一種聰明的工作方式(最終你會忽略警告,並在某些時候,你也可能最終出現錯誤;))。你也可以嘗試Python,但我認爲這會使事情過於複雜。我的代碼很短,你只需要在一個地方編輯;) –