我想将数据集从宽格式重建为长格式,以便在混合模型中进行分析。一些变量具有0M、3M、6M、9M、12M,每3个月重复测量一次12M随访,有些人每月进行一次12次测量。当我使用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
命令(。平衡它们的一种方法可以是创建虚拟变量来填补空白。
代码前的几个注意事项:
- 像
WEIGHT0M WEIGHT3M WEIGHT6M ...
这样的变量名不能作为很好地使用TO关键字,所以在下面的语法中,我创建了一个全新的系列;导入";旧变量的值 - 看起来你实际上有13个数据点,而不是12个——因为变量WEIGHT0M表示未在
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).
这将导致WEIGHT
列中时间点1,2,4,5等的空值。或者,您可以选择将值放在那里,例如,您可以将点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).