/ / sas-if-statement、sasの場合はdouble

if sas-if-statement、sasの場合はdouble

私はこのようなコードを書いてみたいです:

 DATA TEST;
SET original;
IF hour = 30 AND minutes = . or 0 THEN new_minutes = 30;
ELSE if hour = 60 AND minutes = . or 0 then new_minutes = 60;

RUN;

私が使用した場合 IF時間= 30分=。 OR分= 0その後、新しい分= 30;それでは、新しい値が60であっても、それは30に変わるはずです。私は0をすべて0に変更するだけでなく、これを回避する方法もあります。 (またはすべて0から0へ)

回答:

回答№1は2

あなたが必要と思うように聞こえる()。

IF hour = 30 AND (minutes = . or minutes = 0) THEN new_minutes = 30;

または、 in ステートメント

IF hour = 30 AND minutes in ( . , 0) THEN new_minutes = 30;

回答№2の場合は1

あなたは使うことができます coalesce このため;最初のミスヒットの結果を返します。

if hour = 30 and coalesce(minutes,0) = 0 then minutes=30;

私はまた、コードを単純化するためにこの方法で記述することをお勧めします:

if hour in (30,60) and coalesce(minutes,0) = 0 then minutes=hour;

また、時間の法的価値が何であるかによって、最初の部分を潜在的に一般化することさえできます。時間が24時間を超えることができない場合

if hour > 24 and coalesce(minutes,0) = 0 then minutes=hour;

1つの可能性と、時間が15または10かそれに類するもので割り切れるかどうかを確認することもできます。


回答№3の場合は1

あなたは何もせずにそれを書くこともできます if あなたが受け入れることができれば new_minutes 基準が満たされていない場合はゼロである:

データが必要です。 セットがある; new_minutes =(時間は(30,60分)、(分、0))*時間; 走る;