Hello,
I have this code and it works ok, but I have text with words that are separated by space AND semicolons so that no column is greater than 200. So, if either is space or semicolon encountered approaching 200, I would like ok to split while keeping the integrity of the data (i.e. keeping spaces and semicolons in the data in all columns)
Here is an example of text string:
BUPLEURUM SPP. ROOT;CINNAMOMUM CASSIA TWIG;FOSSILIA OSSIS MASTODI;OYSTER SHELL;PANAX GINSENG ROOT;PINELLIA TERNATA TUBER;PORIA COCOS SCLEROTIUM;RHEUM SPP. ROOT WITH RHIZOME;SCUTELLARIA BAICALENSIS
data tmp (drop= i word); set db.cm (keep=subject cmtrt_product recordid);
length nystr $200;
cmtrt_product = compbl(cmtrt_product);
do i = 1 to countw(cmtrt_product,' ');
word = scan(cmtrt_product,i,' ');
if length(nystr) + length(word) + 1 > 200 then do;
output;
nystr = word;
end;
else nystr = catx(' ',nystr,scan(cmtrt_product,i,' '));
end;
if nystr ne '' then output;
run;
proc sort data=tmp; by subject recordid;
proc transpose data=tmp out=want (drop=_name_);
by subject recordid ;
var nystr;
run;
... View more