首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他变量计算变量

从其他变量计算变量
EN

Stack Overflow用户
提问于 2017-03-14 08:41:55
回答 2查看 293关注 0票数 1

我正在尝试创建一个"index“变量(*数学上不是索引),它是我从数据集中的其他变量中调用的'Res‘。下面是我试图使用的代码:

代码语言:javascript
复制
COMPUTE Res = 0.
EXECUTE.

DO IF(Q33 = 6).
    COMPUTE RES = Res - 1.

IF(Q34 = 7).
    COMPUTE Res = Res - 1.

IF(Q35 = 1 OR Q35 = 2).
    COMPUTE Res = Res + 1.

END IF.
EXECUTE. 

不过,这是行不通的--我的变量不会改变。在ELSE IF中尝试过,这确实改变了变量,但是当然,因为“否则”而只实现了一个更改--只有一个更改被实现了。

为了澄清,我试图为Res计算一个分数,所以我希望一步一步地执行代数运算。因此,例如,对于答辩人来说

Q33 = 6,Q34 =7,Q 35 =2

如果条件为真,则所有3种情况都应为0 -1 -1 +1 = -1。

对答辩人来说

Q33 = 2,Q34 =2,Q 35 =1

前两个条件为false,最后一个条件为true,因此Res应为0+1=1。

对答辩人来说

Q33 = 2,Q34 =2和Q35=3

如果条件为false,则所有情况都是假的,因此Res应该为0。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-15 06:36:14

从您的描述中,您需要独立于其他转换来执行每个条件转换(这在您提供的解决方案中也很明显)。

因此,原始代码的问题与使用do if而不是只使用if有关。只有在满足do if条件时,才会执行do if中包含的所有命令。在您的示例中,下面的if命令包含在do if循环中,因此没有执行if (Q33 Ne6)。

do if用于条件命令,但对于单个转换则不需要-- if就足够了。所以你所需要的就是:

代码语言:javascript
复制
COMPUTE Res=0 
IF(Q33 = 6) Res = Res - 1.
IF(Q34 = 7) Res = Res - 1.
IF(Q35 = 1 OR Q35 = 2) Res = Res + 1.
IF(Q35 = 5 OR Q35 = 6) Res = Res - 1.

最后,SPSS给出的数值为0作为假逻辑语句,1表示为真逻辑语句。因此,这应该做同样的工作(包括、RES、的初始定义):

代码语言:javascript
复制
compute RES = 0 - (Q33 = 6) - (Q34 = 7) + (Q35 = 1 OR Q35 = 2) - (Q35 = 5 OR Q35 = 6).

请注意,如果条件变量中缺少值,则最后一个方法是有问题的。在这种情况下,您应该使用以下方法:

代码语言:javascript
复制
compute RES = sum(0, - (Q33 = 6), - (Q34 = 7), (Q35 = 1 OR Q35 = 2), - (Q35 = 5 OR Q35 = 6)).
票数 1
EN

Stack Overflow用户

发布于 2017-03-15 03:37:31

这可能不是最好的方法,但以下工作:

代码语言:javascript
复制
DO IF(Q33 = 6).
    COMPUTE RES = Res - 1.
END IF.

DO IF(Q34 = 7).
    COMPUTE Res = Res - 1.
END IF.

DO IF(Q35 = 1 OR Q35 = 2).
    COMPUTE Res = Res + 1.
END IF.

DO IF(Q35 = 5 OR Q35 = 6).
    COMPUTE Res = Res - 1.
END IF.
EXECUTE.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42781263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档