我有两个表,一个小表,它的结构是:
| old_intervention_code | new_intervention_code |
1abc
| 1efg |
| 5cde | 5xyz
|
另一个大表有非常多的变量,但是就intervention_code来说,有20个,即intervention_code_01 - intervention_code_20。
小表中的old_intervention_code的值会出现在这01 到20的变量中。我想做的事情是把大表中的,与小表的old_intervention_code值相同的intervention_code_{i}都换成小表中对应的new_intervention_code的值。
我写了一点,但是发现并没有实现替换。请各位帮忙看看。谢谢大家!
data intervention_code_replaced;
set code_map (obs=1);
declare hash ht (hashexp:16, dataset: "code_map");
ht.definekey('old_intervention_code');
ht.definedata('new_intervention_code');
ht.definedone();
do until (eof);
set thebigtable end=eof;
if ht.find()=0 then do;
ht.replace();
output intervention_code_replaced;
end;end;
stop;
run;