Hi,
i have a dataset like below
Name | Points |
x | 10 |
y | 5 |
z | 20 |
i want to add the points of x to y, (result dataset should be like below)
Name | Points |
x | 10 |
y | 15 |
z | 20 |
can any one suggest me on this.
thanks
Then we do not use lag(), but a retained variable:
data want;
set have;
retain _points;
if name = 'x' then _points = points;
if name = 'y' then points = points + _points;
drop _:;
run;
data have;
input name $ points;
datalines;
x 10
y 5
z 20
;
data want;
set have;
_points = lag(points);
if name = 'y' then points = points + _points;
drop _:;
run;
Thanks for Rapid response.
this will work only when the y record is next to x.
if i have any other record between x and y , it wont work.
Name | Points |
x | 10 |
a | 1 |
y | 5 |
z | 20 |
i want like below.
Name | Points |
x | 10 |
a | 1 |
y | 15 |
z | 20 |
in my case, i dont have records next to each other, i need to capture the value of one record based on the name and summ it other record based on name.
thanks.
Then we do not use lag(), but a retained variable:
data want;
set have;
retain _points;
if name = 'x' then _points = points;
if name = 'y' then points = points + _points;
drop _:;
run;
If there are situations with missing values, use the sum() function in place of a simple addition.
yes, i did .
but no use
@sg_kr wrote:
yes, i did .
but no use
Which only means that all arguments to the sum() function are missing. If you want to set zero in such cases, add a single zero as argument to the function.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.