我的问题如下:
我有一个数据集,包含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)。
有人知道如何解决这个问题,或者能看出我做错了什么?
提前致谢,
一个。
答案 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 .