2015-05-14 47 views
3

是否有可能使用<,>運算符與if(如果有)函數?事情是這樣的:如果使用IF ANY,可以少於/大於運營商嗎?

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

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

3

你一定要創建一個輔助變量來做到這一點。

@Jignesh Sutar的解決方案是一個正常工作。但是,SPSS通常有多種方式來完成某個任務。

這裏是另一個解決方案,其中COUNT命令就派上用場了。 重要的是要注意下面的解決方案假定變量的值是整數。如果你有float值(例如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). 

注意:以#開頭的變量是臨時變量。它們不存儲在數據集中。

+1

如果Q2到Q10是漂浮物而不是整數,那麼你的值是否小於2的1.5? –

+0

@JigneshSutar非常感謝您的非常重要的評論。我編輯了我的文章,以便處理您的問題。 – mirirai

3

我不認爲你可以(將是很好,如果你能 - 你可以在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. 
+1

如果我在一塊中運行代碼,創建第二個向量時會出現錯誤消息,因爲這兩個向量具有相同的名稱。如果重命名其中一個向量,運行代碼將不太容易出錯。 – mirirai

+1

在第二個VECTOR之前粘貼EXECUTE。 –