Hi Everyone,
Can anybody help in deriving the below "New" variable. For each patient, first group of flags should be 1, 2nd group of flags should be 2 and so on.
| Pat | FL | New |
| 1 | y | 1 |
| 1 | ||
| 1 | y | 2 |
| 1 | y | 2 |
| 1 | ||
| 1 | y | 3 |
| 1 | y | 3 |
| 1 | y | 3 |
| 2 | ||
| 2 | y | 1 |
| 2 | ||
| 2 | y | 2 |
Keeping sequential values of a counter:
data want; set have; by notsorted pat fl; retain count ; if first.pat then count=.; if first.fl and fl='y' then count+1; if fl='y' then New=count; drop count; run;
IF your data does not have all of the PAT values together you won't like the result.
At which point, good luck sorting your data to correct order unless there are a lot of other variables involved to manage such.
You may want to consider setting numeric flag values of 1 instead of character 'y'.
If you most common use is "if variable ='y' then <do something> you can simplify code to : if variable then <do>. SAS treats 1 as "true" in comparisons. To get number of "yes" you can just sum the flag values in any number of procedures which may be easier then counting 'y'.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.