2016-08-22 81 views
5

在数据集中,有10个变量V1,V2,...,V10。如何根据SPSS中几个变量的标准选择病例?

如何选择其中任何变量的值大于或等于10的情况?

我试过,但没有奏效:

temporary. 
select if any(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, ge 10). 
list id. 

这和其他几个没有工作之一:

select if ((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) ge 10). 

回答

1

这也将工作:

count cnt_ = v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 (10 thru highest). 
exe. 
select if cnt_>0. 
exe. 

cnt_变量用于计数如何许多变量的值为10或更大。然后选择命令选择你需要的东西。

此外,请不要忘记execute,以应用所有待处理的转换。否则什么都不会发生。

+0

它会是'count cnt_ = v1 v2 v3 v4 v5 v6 v7 v8 v9 v10(10 thru highest).'? – NonSleeper

+0

不错!我总是忘记了'COUNT'命令。请记住,您可以按照连续的顺序引用变量,如“V1到V10”,也不需要第一个“EXE”。它可以在第二次数据传递中同时完成时引入额外的数据传递。 –

+0

@JigneshSutar你在两个账户上都是正确的:'v1到v10'工作如果变量是连续的;关于'exe' - 我已经看到许多人完全忘记它的例子(甚至在这个问题的一些答案中)。每当我移动到另一组转换时(例如 - 从计数到选择),我养成了添加它们的习惯;但你对第一个不是绝对必要的是正确的。 –

3

你必须循环吧:

do repeat vr=v1 to v10. 
    if vr ge 10 KeepMe=1. 
end repeat. 
select if KeepMe=1. 
+0

感谢您和@Jignesh Sutar的解决方案。然而,我不知道它是否也可以按如下方式完成。例如,如果标准选择的值等于10,那么它可以是:如果有的话(10,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)保持= 1。 '或者,如果选择标准是一个范围而不是一个单一的值,它不能被写入这种风格? – NonSleeper

+0

'any'只能与单个值一起使用(例如-10,如上例所示); 'range',另一方面,cand只使用一个变量:'select if range(var1,10,999)' –

+0

当然,如果你绝对想避免循环,你可以选择v1> = 10或v2> = 10 0r ....',但正如horace_vr所说 - 没有任何命令/功能会使所有这些比较一举成为现实。 –

4

您可以在这里使用VECTOR/LOOP方法并指定一旦第一个变量符合给定条件就退出循环在你的情况下,变量设置为大于10的值越大,所以不必要地继续遍历其余变量:

*****************************************. 
* set up dummy data. 
set seed = 10. 
input program. 
loop #i = 1 to 500. 
compute case = #i. 
end case. 
end loop. 
end file. 
end input program. 
dataset name sim. 
execute. 
vector v(10, F1.0). 
do repeat v = v1 to v10. 
compute v = TRUNC(RV.UNIFORM(1,12)). 
end repeat. 
execute. 
*****************************************. 

vector v=v1 to v10. 
loop i=1 to 10. 
    if (v(i) > 10) Keep=1. 
end loop if v(i) > 10. 
select if Keep. 
+0

'end loop IF'对于增加效率是一个非常好的接触... –