トランザクションを適用してマスタファイルを更新します。
| 該当要素: | DATAステップ |
| カテゴリ: | ファイル操作 |
| 種類: | 実行 |
| 注: | UPDATEステートメントを使用して読み込まれた値はPDVで保持されます。詳細については、XisError: No pubcode in link data found for lrconおよびRETAINステートメントを参照してください。 |
| 注意: |
UPDATEステートメントを使用する際にOUTPUTステートメントを追加すると、望ましくない結果が生成されます。
|
マスタファイルとして使用するSASデータセットを指定します。
| 範囲 | この名前は1レベル名(例:FITNESS)、2レベル名(例:IN.FITNESS)、および特殊SASデータセット名のいずれでもかまいません。 |
| ヒント | データセット名を使用するかわりに、オペレーティングシステムでサポートされている構文を使用してファイルの物理パス名を指定することができます。物理パス名は一重引用符または二重引用符で囲む必要があります。 |
| 参照項目 | XisError: No pubcode in link data found for lrcon |
DATAステップに処理する変数を読み込むときに実行するアクションを指定します。
| 要件 | Data-set-optionsはSASデータセット名の後に丸かっこで囲んで指定する必要があります。 |
| ヒント | データセットを更新する場合、変数の除外、変数の指定、変数名の変更を実行すると便利な場合があります。同じ名前の変数名を変更すると、同じ名前を持つ最初の変数の値が、同じ名前を持つ2番目の変数の値で上書きされるのを回避することができます。このように変数名の1つを変更すると、比較などの処理で両方の変数の値を使用できるようになります。 |
| 参照項目 | 入力データセットで使用するデータセットオプションのリストについては、SASデータセットオプション: リファレンスを参照してください。 |
| 例 | 変数名を変更する更新 |
マスタデータセットに適用する変更を含むSASデータセットを指定します。
| 範囲 | この名前は1レベル名(例:HEALTH)、2レベル名(例:IN.HEALTH)、および特殊SASデータセット名のいずれでもかまいません。 |
| ヒント | データセット名を使用するかわりに、オペレーティングシステムでサポートされている構文を使用してファイルの物理パス名を指定することができます。物理パス名は一重引用符または二重引用符で囲む必要があります。 |
作成する一時変数の名前を指定します。この変数の値には終端指示子が格納されます。この変数の値は0に初期化され、UPDATEステートメントで最後のオブザベーションを処理するときに1に設定されます。この変数はどのデータセットにも追加されません。
トランザクションデータセットにある変数の欠損値を使用して、マスタデータセットにある既存の変数の値を置き換えるかどうかを指定します。
トランザクションデータセットにある変数の欠損値を使用して、マスタデータセットにある変数の値を置き換えないように指示します。
トランザクションデータセットにある変数の欠損値を使用して、マスタデータセットにある変数の値を置き換えるように指示します。
| デフォルト | MISSINGCHECK |
| ヒント | ただし、欠損値が特殊欠損値の場合、MISSINGCHECKは動作しません。MISSINGCHECK(デフォルト値)が指定されている場合でも、マスタデータセットの値は置き換えられます。 |
AからZまでの特殊欠損値の1つを定義すると、マスタデータセットに含まれる数値変数はその値に更新されます。
data ohio.qtr1; update ohio.jan ohio.week4; by store; run;
Master Data Set
HEALTH
OBS ID NAME TEAM WEIGHT
1 1114 sally blue 125
2 1441 sue green 145
3 1750 joey red 189
4 1994 mark yellow 165
5 2304 joe red 170Transaction Data Set
FITNESS
OBS ID NAME TEAM WEIGHT
1 1114 sally blue 119
2 1994 mark yellow 174
3 2304 joe red 170
/*****************************************/ data health; input ID NAME $ TEAM $ WEIGHT; length team $ 6; cards; 1114 sally blue 125 1441 sue green 145 1750 joey red 189 1994 mark yellow 165 2304 joe red 170 ; data fitness; input ID NAME $ TEAM $ WEIGHT; length team $ 6; cards; 1114 sally blue 119 1994 mark yellow 174 2304 joe red 170 ;
/* Sort both data sets by ID */
proc sort data=health;
by id;
run;
proc sort data=fitness;
by id;
run;
/* Update Master with Transaction */
data health2;
length STATUS $11;
update health(rename=(weight=ORIG) in=a)
fitness(drop=name team in=b);
by id ;
if a and b then
do;
CHANGE=abs(orig - weight);
if weight<orig then status='loss';
else if weight>orig then status='gain';
else status='same';
end;
else status='no weigh in';
run;
proc print data=health2;
title 'Weekly Weigh-in Report';
run;
/* Create the Master Data Set */ data payroll; input ID SALARY; datalines; 1011 245 1026 269 1028 374 1034 333 1057 582 ; /* Create the Transaction Data Set */ data increase; input ID SALARY; missing A _; datalines; 1011 376 1026 . 1028 374 1034 A 1057 _ ; /* Update Master with Transaction */ data newpay; update payroll increase; by id; run; proc print data=newpay; title 'Updating with Missing Values'; run;
