可以使用 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).
注意:以#
开头的变量是临时变量。它们不存储在数据集中。
是否可以在 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).
注意:以#
开头的变量是临时变量。它们不存储在数据集中。