Hi Everyone, I am trying to parse a comment section into variables. I want the word before, and two words before a trigger word. The difficulty I am having is that sometimes the trigger word appears more than once (up to five times). I want to pull it each time it is stated. The scan function only returns the last occurrence. My current code below is not pulling the next occurrence, only the last. Does anyone know of a way to pull each iteration before the trigger? Thanks! data have; input ID $ Comments $; datalines; 1 "word word word word word WORD2_BEFORE_1 WORD_BEFORE_1 trigger WORD_AFTER word word word word WORD_BEFORE_2 trigger WORD_AFTER WORD_BEFORE_3 trigger WORD_AFTER" 2 "word word word WORD2_BEFORE_1 WORD_BEFORE_1 trigger word" 3 "word word word word word WORD2_BEFORE_1 WORD_BEFORE_1 trigger WORD_BEFORE_2 trigger"; Data want; set have; count_CI = 0; do i = 1 to countw(comments, " "); count_CI = count_CI + (scan(comments,i) = "trigger"); end; delims= ' ('; delims2= ': '; do i=1 to countw(comments, " ") while (count_CI<=i); if Class_I_p=1 and count_CI=1 and scan(comments, i, " ")="trigger" then do; WORD_BEFORE_1=scan(comments, i-1, delims); WORD2_BEFORE_1=scan(comments,i-2, delims); WORD_BEFORE_2= (scan(comments, i-1, delims))-1); -does not work end; end;
... View more