是否有可能使用<,>運算符與if(如果有)函數?事情是這樣的:如果使用IF ANY,可以少於/大於運營商嗎?
select if (any(>10,Q1) AND any(<2,Q2 to Q10))
是否有可能使用<,>運算符與if(如果有)函數?事情是這樣的:如果使用IF ANY,可以少於/大於運營商嗎?
select if (any(>10,Q1) AND any(<2,Q2 to Q10))
你一定要創建一個輔助變量來做到這一點。
@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).
注意:以#
開頭的變量是臨時變量。它們不存儲在數據集中。
如果Q2到Q10是漂浮物而不是整數,那麼你的值是否小於2的1.5? –
@JigneshSutar非常感謝您的非常重要的評論。我編輯了我的文章,以便處理您的問題。 – mirirai
我不認爲你可以(將是很好,如果你能 - 你可以在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.
如果我在一塊中運行代碼,創建第二個向量時會出現錯誤消息,因爲這兩個向量具有相同的名稱。如果重命名其中一個向量,運行代碼將不太容易出錯。 – mirirai
在第二個VECTOR之前粘貼EXECUTE。 –
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –