It not worked because:
1- add an output to debug
DATA art2;
SET art2;
do list="hxu","Hydroxyure","ntiretroviralTreatmentotSpecified","Antiretroviral",
"and","Antiretroviral Treatment Not cified","iretroviral Treatment Not Specified",
"Ant troviral Treatment Not Specified";
abbrev_codes2=tranwrd(abbrev_codes, list,"");
output;
end;
run;
2- you dont define length of list then >>> length(list) = length("hxu")=3
>>>> list = "hxu","Hyd", "nti" , …. "Ant"
>>>> need to define length of list
>>>> don't forget abbrev_codes2
LENGTH abbrev_codes2 list $100
3- abbrev_codes2=tranwrd(abbrev_codes, list,""); >>> this line of code
>>> resultat = replace only "Ant" in abbrev_codes
>>> change abbrev_codes to abbrev_codes2
abbrev_codes2=tranwrd(abbrev_codes2, list,"");
>>> Its not worked too, because the substring list = "hxu …. " (lenght = 100 >>> hxu + 97 space blank)
>>> use trim()
abbrev_codes2=tranwrd(abbrev_codes2, trim(list),"");
>>> Now it work, but it is not proper like the result you want
>>> add line of code to remove ',' in left and rigth of string
>>> We have;
/********Fix from your code******/
data art2;
set art2;
length abbrev_codes2 list $100;
abbrev_codes2=abbrev_codes;
do list = "hxu","Hydroxyure","ntiretroviralTreatmentotSpecified","Antiretroviral",
"and","Antiretroviral Treatment Not cified","iretroviral Treatment Not Specified",
"Ant troviral Treatment Not Specified";
abbrev_codes2=tranwrd(abbrev_codes2,trim(list),"");
end;
abbrev_codes2=prxchange("s/ /,/",-1,cats(prxchange("s/,//",-1,abbrev_codes2)));
drop list;
run;
/****OR****/
data art2;
set art2;
abbrev_codes2=prxchange('s/hxu|Hydroxyure|ntiretroviralTreatmentotSpecified|Antiretroviral|and|Antiretroviral Treatment Not cified|iretroviral Treatment Not Specified|Ant troviral Treatment Not Specified//',-1,abbrev_codes);
abbrev_codes2=prxchange("s/ /,/",-1,cats(prxchange("s/,//",-1,abbrev_codes2)));
run;
Have a nice day.
... View more