【问题标题】:SPSS recoding variables data from multiple variables into boolean variablesSPSS将变量数据从多个变量重新编码为布尔变量
【发布时间】:2016-11-05 21:54:42
【问题描述】:

我有 26 个变量,每个变量都包含从 1 到 61 的数字。我希望对于每个 1 的情况,每个 2 的情况等,新变量中的数字 1。如果没有 1,则变量应包含 2。 所以 26 个变量的数据如下: 1 15 28 39 46 1 12 等

我想要 61 个变量: 1 2 1 2 2 1 等等。

我一直在阅读有关创建向量、循环、执行 if 等的信息,但我找不到正确的编码方式。我所做的只是创建61个变量并编写

如果 V1=1 或 V2=1 或(等到 V26)则执行。

重新编码 newV1=1。

结束如果。

exe。

**对所有 61 个变量重复此操作。

将 newV1 重新编码为 newV61(缺失=2)。

所以这是很多代码,并且与我想象的完全不同。

谁能帮我解决这个问题?非常感谢您的帮助!

【问题讨论】:

    标签: loops variables if-statement spss recode


    【解决方案1】:

    noumenal 是正确的,你可以用两个循环来做。另一种方法是使用原始值访问VECTOR,将其写入 1,并将所有其他值设置为零。

    为了说明,首先我制作了一些名为 X1 to X4 的假数据(包含 4 个原始变量而不是 26 个)。

    *Fake Data.
    SET SEED 10.
    INPUT PROGRAM.
    LOOP Id = 1 TO 20.
    END CASE.
    END LOOP.
    END FILE.
    END INPUT PROGRAM.
    VECTOR X(4,F2.0).
    LOOP #i = 1 TO 4.
      COMPUTE X(#i) = TRUNC(RV.UNIFORM(1,62)).
    END LOOP.
    EXECUTE.
    

    现在这段代码所做的是为每个变量创建四个向量集,然后使用DO REPEAT 实际引用VECTOR 存根。然后以RECODE 结束 - 如果它丢失,则应编码为 2。

    VECTOR V1_ V2_ V3_ V4_ (61,F1.0).
    DO REPEAT orig = X1 TO X4 /V = V1_ V2_ V3_ V4_.
      COMPUTE V(orig) = 1.
    END REPEAT.
    RECODE V1_1 TO V4_61 (SYSMIS = 2).
    

    这有点痛苦,对于原始 VECTOR 命令,您需要写出所有存根,但是您可以将其复制粘贴到 DO REPEAT 子命令中(或制作一个宏来为您完成)。


    为了更简单的说明,如果我们有我们的原始变量,比如A,它可以取从 1 到 61 的整数值,并且我们想要扩展为 61 个虚拟变量,然后我们将创建一个向量和然后访问该向量中的位置。

    VECTOR DummyVec(61,F1.0).
    COMPUTE DummyVec(A) = 1.
    

    作为记录,如果A = 10,那么这里DummyVec10 将等于1,而所有其他DummyVec 变量仍将默认系统缺失。对于 61 个值,无需使用 DO IF

    其余的代码只是额外的,可以一次性完成多个原始变量。

    【讨论】:

      【解决方案2】:

      应该这样做:

      do repeat NewV=NewV1 to NewV61/vl=1 to 61.
        compute NewV=any(vl,v1 to v26).
      end repeat.
      

      说明: 此语法将遍历值 1 到 61,每个值检查变量 v1 到 v26 是否具有该值。如果它们中的任何一个这样做,则正确的 NewV 将收到值 1。如果它们都没有这样做,则正确的 NewV 将收到值 0。 只需确保 v1 到 v26 在文件中连续排序即可。如果没有,则改为:

      compute NewV=any(vl,v1, v2, v3, v4 ..... v26).
      

      【讨论】:

      • 啊,我误读了原始问题。您不需要遍历 61 个变量,您只需要遍历 26 个变量然后使用 NewVector(Orig_Integer) 进行赋值。
      【解决方案3】:

      您需要一个嵌套循环:两个循环 - 一个外部循环和一个内部循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多