HAVE
- это широкий набор данных с именами, хранящимися в переменных name1-name250
. Вот первые два акса и несколько переменных:
episode name1 name2 name3 name4 name5 ...
121 DETWEILER.TJ.M BLUMBERG.MIKEY GRISWOLD.GUS.N
451 BOB.KING KID.HUSTLER FINSTER.MS PRICKLEY.PETEY GRISWOLD.GUS
...
Некоторые имена необходимо исправить. Исправления хранятся в наборе данных FIXES
:
goodname badname
DETWEILER.TJ DETWEILER.TJ.M
GRISWOLD.GUS GRISWOLD.GUS.N
Мне просто нужно найти badname
из FIXES
, которые появляются в HAVE
, и заменить их на goodname
. В настоящее время я перебираю name1-name250
в шаге данных для каждой строки в FIXES
, чтобы выполнить это:
data WANT;
set HAVE;
array name {*} name1-name250;
do i=1 to dim(name);
if name{i} = "DETWEILER.TJ.M" then name{i} = "DETWEILER.TJ";
else if name{i} = "GRISWOLD.GUS.N" then name{i} = "GRISWOLD.GUS";
/*manually add other corrections from FIXES dataset*/
else name{i} = name{i};
end;
run;
Это кажется действительно неэффективным. Какой способ лучше?