可以使用 less/greater 而不是带有 IF ANY 的运算符吗?

Possible to use less/greater than operators with IF ANY?

是否可以在 if any 函数中使用 <,> 运算符?像这样:

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

我不认为你可以(如果你可以的话会很好 - 你可以在 Excel 中使用 COUNTIF & 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.

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

@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).

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