【问题标题】:Assigning partner values for paired rows in SPSS在 SPSS 中为配对行分配合作伙伴值
【发布时间】:2014-11-04 16:13:15
【问题描述】:

想象一个包含成对参与者(“Couple”1-10)的数据集,每个参与者都有一个唯一标识符(“Person”1 或 2)。一对中的每个人在某个变量上都有一个唯一的值,称为“演员”。我想编写一个脚本,该脚本获取个人的“演员”值并将其放入名为“合作伙伴”的对中另一个人的新变量中。这样一来,每个人(行)都会有自己的价值(“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 代码。任何人都知道我可以如何安装它?

谢谢!

【问题讨论】:

  • edit您的问题标题描述您遇到的具体问题。对于将来搜索此站点以帮助解决他们遇到的问题的人来说,“高级 SPSS 语法”在搜索结果中将毫无意义。您关于 SPSS 的问题可以从标签中得知,因为它与语法有关。这在您的标题“高级”中留下了唯一的词,它没有告诉任何人这个问题涉及什么。谢谢。

标签: syntax spss


【解决方案1】:

下面的代码应该可以解决问题:

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 的功能(我真的很想念它),所以您不能将第二行中的值直接复制到第一行中。您必须先按降序对 person 变量进行排序。

【讨论】:

  • 太棒了,非常聪明。看起来这很有效,但只有在运行语法两次之后。有没有办法让它在一次通过后工作?感谢您的帮助!
  • 您可能需要在整个过程之后添加 EXECUTE 命令。否则,第二个 IF 语句将保持挂起状态,直到您运行导致执行挂起命令的命令。在您的情况下,这可能是您第二次运行该语法时的第一个 SORT CASES 命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 2012-11-15
  • 2013-02-14
相关资源
最近更新 更多