想象一下有一对参与者的数据集("情侣" 1-10),每个参与者都有一个唯一的标识符("人" 1或2)。一对中的这些个体中的每一个在某个变量上具有唯一值,称之为“演员”#34;。我想写一个带有" Actor"的脚本。个人的价值,并将其放入一对名为"合作伙伴的另一个人的新变量。"通过这种方式,每个Person(行)都有自己的值(" Actor")和他们的合作伙伴的值(" Partner")。
我尝试的方法涉及重组:
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.
现在,这对于我创建的小型假设数据集非常有效。但是,我希望脚本能够处理更多变量而无需用户手动输入更多/ MAKE命令。
这样的东西?
for i in varlist[var=all]
do
VARSTOCASES
/MAKE i FROM i.1 i.2
/INDEX=Index1(2).
但那不是有效的SPSS代码。任何人都知道如何解决这个问题?
谢谢!
答案 0 :(得分: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函数将actor的id(从上一行)复制到伙伴(第二行)合作伙伴变量中。由于SPSS中没有类似Follower的功能(我真的很想念它),你不能直接将第二行的值复制到第一行。您必须先按降序对person变量进行排序。