SAS: Inserting from one table into another -
i have data set want update results of separate analysis. analysis done in loop. @ end of loop, master data set updated values analysis. however, having difficulty inserting new values master table.
for example, have removed loop. also, rather overwrite master data set, create copy.
the master data set has 2 variables used identify rows need values inserted into, namely var1 , var2.
data master; input var1 $ var2 $; datalines; a a b b ; run; since results part of loop, insertions have performed separately. is, cannot combine results of analysis single table , perform 1 merge. have given them 2 separate data sets here.
data first_insert; input var1 $ var2 $ var3 $; datalines; a c ; run; data second_insert; input var1 $ var2 $ var3 $; datalines; b d ; run; my first approach use merge statement. however, when this, not data written master table.
*****************; ** using merge **; *****************; data master_merge_copy; set master; run; data master_merge_copy; merge master_merge_copy first_insert ; var1 var2; run; this merges expect to, placing value c in var3 var1 = , var2 = a.
obs var1 var2 var3 1 c 2 c 3 b 4 b however, when perform second merge, first observation matching merge criteria written to. need write var3 = d observations var1 = , var2 = b.
data master_merge_copy; merge master_merge_copy second_insert ; var1 var2; run; obs var1 var2 var3 1 c 2 c 3 b d 4 b second, try using update statement.
******************; ** using update **; ******************; data update_copy; set master; run; data update_copy; update update_copy first_insert ; var1 var2; run; however, presence of multiple observation within group generates error.
warning: master data set contains more 1 observation group. var1=a var2=a var3= first.var1=0 last.var1=0 first.var2=0 last.var2=1 _error_=1 _n_=2 warning: master data set contains more 1 observation group. var1=a var2=b var3= first.var1=0 last.var1=1 first.var2=0 last.var2=1 _error_=1 _n_=4 the resulting data set not expect:
obs var1 var2 var3 1 c 2 3 b 4 b it seems there may solution using proc sql insert , where statement. however, unclear me how when value inserted lives in separate table. examples can find declare value inserted explicitly. example,
proc sql; update sql.newcountries set population=population*1.05 name 'b%'; quit; please advise!
don't insert anything. generate new records , append them new result file generating. first make sure all_results doesn't exist. in loop append current results it. example data these steps.
proc append base=all_results data=first_insert force; run; proc append base=all_results data=second_insert force; run; now can create overall results want merging table master table.
data want ; merge master all_results; var1 var2; run;
Comments
Post a Comment