在汇集数据主题时,OR运算符似乎不起作用

时间:2017-08-17 08:45:21

标签: spss pooling

我的问题如下:

我有一个数据集,包含3种类型的变量(比如A,B和C)。具体而言,对于每个变量,我可以将患者汇集到变量的高,中,低值。

现在我想将受试者分成具有低A,B或C,或中等或高水平的类别(例如,同时将所有3个变量的患者组合成单个低/中/高组)。

但是,当我使用以下代码时,这不能正常工作:

IF ((A <= 10) OR (B <= 15) OR (C <= 20)) pool = 1. /* low levels
IF ((A > 10 AND A <= 100) OR (B > 15 AND B <= 150) OR (C > 20 AND C <= 200)) pool = 2. /* mid levels
IF ((A > 100) OR (B > 150) OR (C > 200)) pool = 3. /* high levels
VARIABLE LABELS pool "pooled subjects (A/B/C)".
EXECUTE.

当我现在运行频率表时,具有低水平A,B或C的受试者不会合并为一组。似乎只有患者,特别是具有低水平的所有三个变量的患者合并。似乎有一些选择的主题进入其他组,例如结果是一组非常大的科目(对于池= 2)和2个非常小的科目组。

我的预期(以及我想要的)是将所有患者分成具有上述特征的各个群体( 低水平的变量A B < strong>或 C)。

有人知道如何解决这个问题,或者能看出我做错了什么?

提前致谢,

一个。

1 个答案:

答案 0 :(得分:1)

您当前语法的逻辑使一个主题属于多个池 - 甚至全部三个。例如,如果受试者的A水平较低,B水平较高,C水平较高,则所有三个条件均为真。 您的条件的顺序规定,如果一个主题属于多个池,则较高的池是为该主题保留的池。您描述的结果意味着只有具有三个低值的受试者才能保持其pool=1定义。

由于池不是互斥的(假设您不想更改定义),您应该单独定义它们:

compute pool1 = ((A <= 10) OR (B <= 15) OR (C <= 20)). /* low.
compute pool2 = (range(a,11,100) or range(b,16,150) or range(c,21,200)). /* mid.
compute pool3 = ((A > 100) OR (B > 150) OR (C > 200)). /* high .