【问题标题】:DO IF, ELSE: Else not being computedDO IF, ELSE: Else 不被计算
【发布时间】:2016-07-04 13:41:32
【问题描述】:

只有初始的 if 语句变量计算正在完成 - ELSE 部分被忽略。有人可以解释为什么吗?非常感谢。

数据集激活数据集 1。 DO IF ((A1_SCN2_PR1_UE = 0 & A1_SCN3_PR1_UE = 0 & A1_SCN4_PR1_UE = 0 & A1_SCN5_PR1_UE = 0) | (A2_SCN2_PR1_UE = 0 & A2_SCN3_PR1_UE = 0 & A2_SCN4_PR1_UE = 0 & A2_SCN5_PR1_UE = 0) | (A3_SCN2_PR1_UE = 0 & A3_SCN3_PR1_UE = 0 & A3_SCN4_PR1_UE = 0 & A3_SCN5_PR1_UE = 0))。 计算 FM_zero = 1。 否则。 计算 FM_zero = 0。 万一。 执行。

【问题讨论】:

  • 代码看起来不错。可能是您的数据/变量或逻辑操作错误。
  • 所有变量都定义了吗? IBM 的这篇文章:DO IF, ELSE with COMPUTE leaving some variable values missing 解释了在 DO IF 的布尔表达式中未定义某些变量时“省略”Compute 计算的情况。
  • 我知道它们是因为我从 SPSS 点中选择了它们,单击,添加菜单。我发现的解决方案是最初设置 FM_zero = 0。似乎在创建变量并将非 1 值设置为缺失时,它不会接受“ELSE”来更改它们——即,ELSE COMPUTE FM_zero = O. 似乎需要为 ...Sysmis (FM_zero) = 0。知道为什么吗??

标签: if-statement spss


【解决方案1】:

不知道为什么你的 ELSE 没有被计算,但我建议你放弃 DO IF 并改为这样:

compute FM_zero = 
    ((A1_SCN2_PR1_UE = 0 & A1_SCN3_PR1_UE = 0 & A1_SCN4_PR1_UE = 0 & A1_SCN5_PR1_UE = 0) | 
    (A2_SCN2_PR1_UE = 0 & A2_SCN3_PR1_UE = 0 & A2_SCN4_PR1_UE = 0 & A2_SCN5_PR1_UE = 0) | 
    (A3_SCN2_PR1_UE = 0 & A3_SCN3_PR1_UE = 0 & A3_SCN4_PR1_UE = 0 & A3_SCN5_PR1_UE = 0)).

这将在所有真实情况下设置 1,在所有错误情况下设置 0。

【讨论】:

    【解决方案2】:

    SPSS 使用三值逻辑:真、假或不知道 (sysmis)。 从语法参考手册... DO IF 或任何 ELSE IF 上的逻辑表达式返回的缺失值会导致控制权传递给 此时的 END IF 命令。

    因此,通常您应该将 sysmis 测试首先放在 DO IF 中,然后使用适当的 ELSE IF/ELSE。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多