Hi,
To debug this, I would recommend running code like the following. I created a variable WORD, for the nth wort of the string, and commented out your IF statement:
%LET expense_type = "Care";
data item_docs ;
input item_name $16. ;
cards ;
Care of invalids
Something else
Personal care
run ;
data item_docs_specific;
set item_docs;
/* loop through item_name variable to find observations that match with the expense type keyword use.r wanted */
do n=1 to countw(item_name);
word=scan(item_name, n) ;
put item_name= n= word= ;
*** if count(lowcase(scan(item_name,n)), lowcase(&expense_type)) > 0 ;
output;
end;
drop n;
run;
If that is working like you want, then uncomment the IF statement and see how it changes. The IF statement here is your problem. Note that it is a subsetting IF statement.
You don't have to loop through the list to do this. You can use the FINDW function to search for a word like:
data item_docs_specific;
set item_docs;
if findw(item_name,&expense_type,' ',"i") ;
run ;
But since you've already written the loop, it's worth debugging your current code, just to think through debugging a loop, and the implications of using a subsetting IF statement inside a loop.
... View more