Sas: proc sql で update を使用する方法


SAS のPROC SQLUPDATEステートメントを使用して、データセット内の 1 つ以上の列の値を更新できます。

UPDATEステートメントを実際に使用する最も一般的な方法は次のとおりです。

方法 1: 条件に基づいて列の値を更新する

 proc sql ;
    update my_data
    set var1='new_value'
    where var1='old_value';
quit ;

方法 2: 複数の条件に基づいて列の値を更新する

 proc sql ;
    update my_data
    set var1 = 
    case when var1> 25 then 100
    when var1> 20 then 50
    else 0
    end;
quit ;

次の例は、SAS の次のデータセットで各メソッドを実際に使用する方法を示しています。

 /*create dataset*/
data my_data;
    input team $position $points;
    datalines ;
A Guard 22
A Guard 20
A Guard 30
A Forward 14
A Forward 11
B Guard 12
B Guard 22
B Forward 30
B Forward 9
B Forward 12
B Forward 25
;
run ;

/*view dataset*/
proc print data =my_data; 

例 1: 条件に基づいて列の値を更新する

PROC SQLで次のUPDATEステートメントを使用すると、各チーム列の値が「Atlanta」になるように更新できます。ここで、既存の値は「A」と等しくなります。

 /*update values in team column where team is equal to 'A'*/
proc sql ;
    update my_data
    set team='Atlanta'
    where team='A';
quit ;

/*view updated dataset*/
proc print data =my_data; 

以前は「A」に相当していたチーム列の各値が、現在は「アトランタ」に相当することに注意してください。

チーム列の「A」に等しくない値はそのまま変更されません。

例2: 複数の条件に基づいて列の値を更新する

PROC SQLで次のUPDATEステートメントを使用すると、いくつかの条件に基づいてポイント列の各値を更新できます。

 /*update values in points column based on multiple conditions*/
proc sql ;
    update my_data
    set points = 
    case when points> 25 then 100
    when points> 20 then 50
    else 0
    end;
quit ;

/*view updated dataset*/
proc print data =my_data; 

UPDATEステートメントとCASE WHENステートメントを使用して、ポイント列の値を更新しました。

特に:

  • ポイント列の既存の値が 25 より大きい場合は、それを100に更新します。
  • それ以外の場合、ポイント列の既存の値が 20 より大きい場合は、それを50に更新します。
  • それ以外の場合は、 Points 列の値を0に更新しました。

CASE WHENステートメントでは 3 つの条件のみを使用しましたが、必要な数の条件を使用できることに注意してください。

追加リソース

次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。

SAS: PROC SQL で LIKE 演算子を使用する方法
SAS: PROC SQL で IN 演算子を使用する方法
SAS: PROC SQL で WHERE 演算子を使用する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です