【问题标题】:SPSS looping through a set of variables in combination with if-statementSPSS结合if语句循环遍历一组变量
【发布时间】:2014-02-11 08:22:20
【问题描述】:

我有 53 个变量,分别命名为 W1_C14_0 到 W1_C14_52,每个变量都有一个从 1 到 15 的值。我需要找出这个列表中每个数字有多少个“拼写”——即有多少个单独的 1,在每种情况下都是 2 等。这就是我正在做的事情,它工作正常,但是有没有办法将它压缩成一个循环?

DO REPEAT first = W1_C14_0 to W1_C14_51 /
second = W1_C14_1 to W1_C14_52 .
   DO IF (SYSMIS(first) OR first<>second) .
      DO IF (second=1) . 
         COMPUTE W1_spells1 = W1_spells1 + 1 .
      ELSE IF (second=2) .
         COMPUTE W1_spells2 = W1_spells2 + 1 .
      ELSE IF (second=3) .
         COMPUTE W1_spells3 = W1_spells3 + 1 .

      *and so on down to...

      ELSE IF (second=15) .
         COMPUTE W1_spells15 = W1_spells15 + 1 .
      END IF.
   END IF.
END REPEAT .

【问题讨论】:

  • 您需要更具体地了解什么是一次运行以及您最终想要的数据。如果你有一组11112222,结果会是什么? 12121212112211221112223 等怎么样?你可能会从这个NABBLE question 中找到一些动力,或者我可能会考虑使用VARSTOCASES 并同时使用LAG 函数。

标签: loops if-statement vector spss


【解决方案1】:

您可以使用VECTOR 命令循环遍历拼写变量。

VECTOR W1_spells = W1_spells1 TO W1_spells15.

DO REPEAT first = W1_C14_0 to W1_C14_51 /
second = W1_C14_1 to W1_C14_52 .
   DO IF (SYSMIS(first) OR first<>second).
      LOOP #i=1 TO 15.
         DO IF (second=#i) . 
            COMPUTE W1_spells(#i) = W1_spells(#i) + 1.
         END IF.
      END LOOP.
   END IF.
END REPEAT.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多