BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
GuillermoPH
Obsidian | Level 7

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:

 

DB_Original.jpg

 

In the end, i'd like to have this new column:

 

DB_Resultante.jpg

 

Any help will be much appreciated!

 

Regards,

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

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;

View solution in original post

4 REPLIES 4
Reeza
Super User

Are you writing code or using the GUI?

GuillermoPH
Obsidian | Level 7
I'm using the GUI but I could write it down in code.
Reeza
Super User

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;
GuillermoPH
Obsidian | Level 7

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 🙂 

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 5765 views
  • 1 like
  • 2 in conversation