重复测量次数不等的宽到长 SPSS

问题描述

我想将数据集从宽格式重建为长格式,以便在混合模型中进行分析。有些变量每 3 个月有 0M、3M、6M、9M、12M 重复测量一次 12M随访,有的每月12次测量1次。使用VARTOCASES时,如何填写子命令索引?如果我记录(5)它不适合每个月重复测量,等等如果我注册(12)它不适合每3个月测量一次。你有什么建议?

VARSTOCASES
    / make WEIGHT from WEIGHT0M WEIGHT3M WEIGHT6M WEIGHT9M WEIGHT12M
    / make HB from HB1 to HB12
    / index = TIME (5)
    / keep = ID.

解决方法

首先您必须处理两个变量组之间的不平衡 - varstocases 在它们平衡之前根本不起作用(您不能有两个 /make ... from 命令具有不同数量的变量)。 平衡它们的一种方法是创建虚拟变量来填补空白。

代码前的一些说明:

  1. WEIGHT0M WEIGHT3M WEIGHT6M ... 这样的变量名不能作为 the TO keyword 很好, 所以在下面的语法中,我创建了一个全新的系列并“导入” 来自旧变量的值。
  2. 似乎您实际上有 13 个数据点而不是 12 个 - 因为 变量 WEIGHT0M 表示点 0M,它没有在 HB1 to HB12 系列 - 因此我们也需要为此创建一个虚拟对象。
compute WEIGHTM0=WEIGHT0M.
vector WEIGHTM(12).
do repeat /nw=WEIGHTM3 WEIGHTM6 WEIGHTM9 WEIGHTM12 /orig=WEIGHT3M WEIGHT6M WEIGHT9M WEIGHT12M.
   compute nw=orig.
end repeat.
compute HB0=$sysmis.
    
VARSTOCASES
    / make WEIGHT from WEIGHTM0 to WEIGHTM12
    / make HB from HB0 to HB12
    / index = TIME (13).

这将在时间点 1、2、4、5 等的 WEIGHT 列中得到空值。或者,您可以选择将值放在那里,例如,您可以将点 0 的值复制到点 1、2,将点 3 的值复制到点 4、5 等。您可以通过扩展上述循环来实现,或者您可以使用以下内容 - 在 varstocases 之后:

sort cases by ID index.
if $casenum>1 and ID=lag(ID) and missing(WEIGHT) WEIGHT=lag(WEIGHT).
,

感谢 Eli 的详细回答。它帮助我深入了解了问题。