2017-09-12 20 views
0

1つの変数の特定の値を検出し、それらの条件が満たされている場合は新しい変数を作成しようとしています。SASの同じ変数に対する複数の条件

はここに(私は多くのより多くの行を持っている)私のデータの一部です:

id time result 
1 1 normal 
1 2 normal 
1 3 abnormal 
2 1 normal 
2 2  
3 3 normal 
4 1 normal 
4 2 normal  
4 3 abnormal 
5 1 normal 
5 2 normal 
5 3    

私は

id time result base 
1 1 normal 
1 2 normal  x 
1 3 abnormal 
2 1 normal  x 
2 2 
2 3 normal 
3 3 normal   
4 1 normal 
4 2 normal  x 
4 3 abnormal  
5 1 normal 
5 2 normal  x 
5 3    

たいどのような結果が時点で存在しているとき私のベースライン値(ベース)が(移入する必要があります時間)2.結果がない場合、ベースラインは時間= 1であるべきである。

if result="" and time=2 then do; 
if time=10 and result ne "" then base=X; end; 

if result ne "" and time=2 then base=X; ` 

time = 2で結果が正しくなると正しく動作します。しかし、結果が欠落している場合は、何か間違っています。

+0

あなたのサンプルコードを使用してサンプルデータが一貫してください。あなたのコードでは、サンプルデータに表示されていない変数 'visit'、' visitnum'、 'day'を参照します。あなたのフラグ変数はあなたのデータでは 'base'と呼ばれますが、あなたのコードでは' base_'です。それとは別に、あなたのサンプルの結果と、あなたが達成しようとしているものの小さな説明(間違っていると思われる)からは分かりません。あなたの 'if-then-if'構文はかなり変わっています。 – user2877959

+0

うわー。そのコードはこのように急いでコピーされていますが、あまりにも多くの間違いがあったことを認識していませんでした。今私は私の質問を修正し、修正しました。 – Laura

答えて

2

質問が少しずれているようです。 "Else if time =" "and time = 1"どこかにタイプミスがあるようです。

ただし、構文は固まっているようです。私はあなたの与えられたデータで例を取り上げました。最初の条件は動作しますが、2番目(else if)が前提です。質問としての更新が更新されました。

options missing=''; 
    data begin; 
    input id time result $ 5-20 ; 
    datalines; 
    1 1 normal 
    1 2 normal 
    1 3 abnormal 
    2 1 normal 
    2 2   
    3 3 normal 
    4 1 normal 
    4 2 normal  
    4 3 abnormal 
    ; 
run; 

data flagged; 
    set begin; 
    if time=2 and result NE "" then base='X'; 
    else if time=1 and id=2 then base='X'; 
run; 

再訪された質問に基づいて編集します。

時刻(1)は常にポイント(2)の次にあるとします。 (そうでない場合は、遅れを追加してください。)リードのシミュレーションでは、データを逆順にソートしてラグを使用します。

proc sort data=begin; by id descending time; run; 

data flagged; 
    set begin; 
    if lag(time)=2 and lag(result) EQ "" then base='X'; 
    if time=2 and result NE "" then base='X'; 
run; 

遅れの反対についての詳細:https://communities.sas.com/t5/SAS-Communities-Library/How-to-simulate-the-LEAD-function-opposite-of-LAG/ta-p/232151

+0

あの4人の主題にはうんざりですが、実際には私のデータセットには60人の主題があります(最初は言及していませんでした)ので、これらの値をID番号で検出するのは疲れます。 – Laura

+0

@Laura更新された回答。 – pinegulf

+0

こんにちは!それはそれを行うでしょう。どうもありがとうございました! – Laura

関連する問題