2014-01-10 62 views
-2

我需要在循環中編寫以下查詢。可能嗎 ?在if語句中反覆提交語句

if a1 > 0 
or a2 > 0 
or a3 > 0 
or a20 > 0 then some_variable =dummy; 

我不能在宏定義中反覆思考任何邏輯。問的問題只是一個快照。實際數量有所不同,直到200

+2

添加語言標籤。 –

+0

如果[tag:sas]答案被接受,我會添加它。 – Joe

回答

0

我正在外出時猜測這是,因爲您之前的問題是,您的問題聽起來像SAS。

如果使用常規數據步驟變量,則可以在數組中執行此操作。

data want; 
set have; 
array a a1-a200; 
if max(of a[*]) > 0 then some_variable=dummy; 
run; 

max會給你200個變量的數量最多,而如果是> 0,那麼你是好去。如果布爾條件更復雜,則可能需要遍歷數組。

+0

是的tha語言是SAS,並感謝您的及時響應。這個答案似乎工作。但是,你能解釋一下max的背景嗎?對不起,如果我的問題太蹩腳。 – Mukul

+0

'max()'給出了提供的一組變量中的最大值。 'max(of ...)'是你如何使用空格分隔的列表,所以,'max(a,b,c)'='max(a b c)'。 (這在大部分相似的函數中都是這樣。)'a [*]'列出了包含數組'a'的所有變量,所以'a [*] = a1 a2 a3 a4 a5 ... a200'。所以'max([*])'表示'max(a1,a2,a3,a4,a5,...,a200)'。這給了最高的價值;因爲您正在檢查的值是否超過0,所以如果最高值超過0,則至少有一個值必須超過0,否則值不能超過0. – Joe

+0

謝謝你,真棒。它如此簡單,你怎麼把它寫進文字。 – Mukul