【问题标题】:SPSS Syntax- new variable based on 3 variablesSPSS Syntax - 基于 3 个变量的新变量
【发布时间】:2017-01-09 16:41:58
【问题描述】:

我需要基于 3 个变量创建一个新变量。

如果某人针对 3 个变量中的任何 1 个被编码为 1,则他们在新变量中被编码为 1

如果它们不在任何变量上编码 1,而是在 3 个变量中的任何一个上编码为 2,则它们在新变量中被编码为 2

其他的都编码为 99

在语法上,我写成这样:

IF (Keep_Any=1 OR Find_Any=1 OR Improve_Any=1) Keep_Find_Improve=1.
IF ((Keep_Find_Improve~= 1) & (Keep_Any=2 | Find_Any=2 | Improve_Any=2)) Keep_Find_Improve=2.
IF (Keep_Find_Improve~=1 & Keep_Find_Improve~=2) Keep_Find_Improve=99.
EXECUTE.

但是,第一部分正确识别编码为 1 的案例,但其余语法不起作用。尽管使用了一些在其他变量上使用完全相同逻辑的语法,但这是在:

COMPUTE Keep_Any= Q9a_recoded = 1 | Q9b_recoded = 1 | Q9c_recoded = 1.
EXECUTE.

IF (Q9A_recoded=1 OR Q9B_recoded=1 OR Q9C_recoded=1) Keep_Any=1. 
IF ((Keep_Any~=1) & (Q9A_recoded= 2 OR Q9B_recoded=2 OR Q9C_recoded=2)) Keep_Any=2.
IF (Keep_Any~=1 & Keep_Any~=2) Keep_Any=99.
EXECUTE.

有没有人知道为什么会发生这种情况以及如何解决它?

【问题讨论】:

  • 会不会是失踪了?确保您的变量没有丢失。如果它们打算丢失,请确保它们在您的代码中正确说明?

标签: syntax spss


【解决方案1】:

试试:

COMPUTE Target1=99.
COMPUTE Target1=ANY(2, V1, V2, V3).
COMPUTE Target1=ANY(1, V1, V2, V3).

或者更好(更高效,即使代码行更多)

DO IF ANY(1, V1, V2, V3)=1.
   COMPUTE Target2= 1.
ELSE IF ANY(2, V1, V2, V3)=1.
  COMPUTE Target2 = 2.
ELSE.
  COMPUTE Target2=99.
END IF.

【讨论】:

    【解决方案2】:

    您的语法不起作用的原因是您使用的第二个条件:
    IF ((Keep_Find_Improve~= 1) & ...
    当第一个条件不满足时,Keep_Find_Improve 仍然缺失,因此不满足~=1 的条件。 IF (Keep_Any~=1 & Keep_Any~=2) 也是如此。 所以你不应该将Keep_Find_Improve 与 1 或 2 进行比较,你应该检查它是否收到了一个值或者它是否仍然丢失:

    IF (Keep_Any=1 OR Find_Any=1 OR Improve_Any=1) Keep_Find_Improve=1.
    IF (missing(Keep_Find_Improve) & (Keep_Any=2 | Find_Any=2 | Improve_Any=2)) Keep_Find_Improve=2.
    IF missing(Keep_Find_Improve) Keep_Find_Improve=99.
    * alternatively: recode Keep_Find_Improve(miss=99).
    EXECUTE.
    

    说了这么多,我建议你使用@JigneshSutar 建议的更高级的代码。

    【讨论】:

    • 非常感谢! 'Do if' 语句似乎起到了作用。我认为它可能需要这样的东西,但不知道如何用语法写出来。再次感谢!
    • @Rachael,在 StackOverflow 中提出问题时,您应该投票赞成您认为有用的任何答案,并选择您实际用作解决方案的答案 - 为了以后有类似问题的用户受益。跨度>
    猜你喜欢
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多