I'm trying to understand how the retain statement is supposed to work with existing variables, but still it seems I missing something as I do not get the desired result
In the following example my code aim to create a sort of counter for the value variable
data new (sortedby=id);
input id $ value count;
datalines ;
d 55 0
d 66 0
d 33 0
run;
data cc;
set new;
by id;
retain count;
count+value;
run;
And I 'm expecting that the count variable will be the result of the cumulation of the value column. However, the result is not achived and the column keep its original 0 values.
I would be interested in understanding why the implict retain statement in the "+" sign is not working in this case.
It is an issue related to the fact that count is an already existing variables?
Bests
All the RETAIN statement does is prevent variable from being set to missing at the top of the DATA step. In your code, your SET statement reads a value for COUNT (0), so even though the value is retained, it is reset to 0 when the SET statement executes.
I would play with code like below, with lots of PUT statements in it:
At the top of the loop, Count and Count2 are retained. Count is retained because of the explicit retain statement, and because it was read on a SET set statement. Count2 is retained because the sum statement has an implicit retain. Count3 is not retained.
Results are like: