是否可以使用<,>运营商如果有任何功能?像这样:
select if (any(>10,Q1) AND any(<2,Q2 to Q10))
答案 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).
注意:以#
开头的变量是临时变量。它们不存储在数据集中。