【问题标题】:Wide to Long with unequal number of repeated measurements SPSS从宽到长,重复测量次数不等 SPSS
【发布时间】:2021-08-29 00:02:37
【问题描述】:

我想将数据集从宽格式重建为长格式,以便在混合模型中进行分析。有些变量每3个月有0M、3M、6M、9M、12M重复测量一次 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.

【问题讨论】:

    标签: reshape spss


    【解决方案1】:

    首先,您必须注意两个变量组之间的不平衡 - 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).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多