🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 09-18-2017 05:40 PM
(6907 views)
Hi!
I'm trying to aggregate the following by EstadoCDR, buy i haven't been able to produce the desired result. Here's an example of how my DB looks like:
In the end, i'd like to have this new column:
Any help will be much appreciated!
Regards,
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Here's an example via code. I used one of the datasets to illustrate the concepts, but it's basically using BY processing and the RETAIN statement.
*generate sample data;
data baseball;
set sashelp.baseball;
keep team name salary;
run;
*sort on Grouping variable, for BY statement;
proc sort data=baseball;
by team name;
run;
*add totals;
data want;
set baseball;
by team name; *same as from PROC SORT;
retain total_salary; *keeps values across rows;
if first.team then total_salary = sum(0, salary); *reset for first record;
else total_salary = sum(total_salary, salary); *accumulate;
run;
4 REPLIES 4
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Are you writing code or using the GUI?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I'm using the GUI but I could write it down in code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Here's an example via code. I used one of the datasets to illustrate the concepts, but it's basically using BY processing and the RETAIN statement.
*generate sample data;
data baseball;
set sashelp.baseball;
keep team name salary;
run;
*sort on Grouping variable, for BY statement;
proc sort data=baseball;
by team name;
run;
*add totals;
data want;
set baseball;
by team name; *same as from PROC SORT;
retain total_salary; *keeps values across rows;
if first.team then total_salary = sum(0, salary); *reset for first record;
else total_salary = sum(total_salary, salary); *accumulate;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Yes, exactly what I was looking for! Just had to do a minor change in the coding (I already had the info sorted the way I wanted):
data acumula; set ms_cdr; by EstadoCDR; retain Acumulado_MS; if first.EstadoCDR then Acumulado_MS = sum(0, ms_cdr); else Acumulado_MS = sum(Acumulado_MS, ms_cdr); run;
Thanks a lot! You saved me 🙂