使用IF ANY可以使用更少/更多的运算符吗?

时间:2015-05-14 18:03:46

标签: spss

是否可以使用<,>运营商如果有任何功能?像这样:

select if (any(>10,Q1) AND any(<2,Q2 to Q10))

2 个答案:

答案 0 :(得分:3)

我认为你不能(如果可以的话会很好 - 你可以在Excel中使用COUNTIF&amp; SUMIF IIRC做类似的事情。

您必须构建一个新变量来测试多个ANY小于条件,如下例所示:

input program.
loop #j = 1 to 1000.
    compute ID=#j.
    vector Q(10).
    loop #i = 1 to 10.
    compute Q(#i) = trunc(rv.uniform(-20,20)).
    end loop.
    end case.
end loop.
end file.
end input program.
execute.

vector Q=Q2 to Q10.
loop #i=1 to 9 if Q(#i)<2.
  compute #QLT2=1.
end loop if Q(#i)<2.

select if (Q1>10 and #QLT2=1).
exe.

答案 1 :(得分:3)

你肯定需要创建一个辅助变量来执行此操作。

@Jignesh Sutar的解决方案是可行的。但是,SPSS通常有多种方法可以完成某项任务。

这是另一个解决方案,其中COUNT命令派上用场。 重要的是要注意,以下解决方案假定变量的值是整数。如果你有浮动值(例如1.5),你会得到错误的结果。

* count occurrences where Q2 to Q10 is less then 2.
COUNT #QLT2 = Q2 TO Q10 (LOWEST THRU 1).

* select if Q1>10 and 
* there is at least one occurrence where Q2 to Q10 is less then 2.
SELECT (Q1>10 AND #QLT2>0).

这种解决方案还有一种变体可以正确处理浮点变量。但我认为它不太直观。

* count occurrences where Q2 to Q10 is 2 or higher.
COUNT #QGE2 = Q2 TO Q10 (2 THRU HIGHEST).

* select if Q1>10 and 
* not every occurences of (the 9 variables) Q2 to Q10 is two or higher.
SELECT IF (Q1>10 AND #QGE2<9).

注意:以#开头的变量是临时变量。它们不存储在数据集中。