BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.

data xyz;

input var1 var2;

monday 13

monday 12

total .  

tuesday 10

tuesday 23

total .

wednesday 34

wednesday 43

total .

run;

 

how to get the sum of by using var1 and place the results for total rows in var2 in data step?

i.e. no proc procedure/proc sql i shall use to get the answer.

1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User

It seems that is an interview question.

Nonsense for real world.

 

data xyz;
input var1 :$20. var2;
cards;
monday 13
monday 12
total .  
tuesday 10
tuesday 23
total .
wednesday 34
wednesday 43
total .
;

data want;
 set xyz;
 cum+var2;
 if var1='total' then do;var2=cum;cum=.;end;
 drop cum;
run;

View solution in original post

7 REPLIES 7
PaigeMiller
Diamond | Level 26

Typically, this is not a good idea to store these sums in a SAS data set in the same column as the raw data. Better would be to have these results in a report of some type, or put the sums in a different column. Do you have a preference?

--
Paige Miller
sahoositaram555
Pyrite | Level 9
@PaigeMiller, at the moment the data structure is like this and it would be great if i get help to find a solution for a sum value for the total row which makes the further downstream work much easier.
PaigeMiller
Diamond | Level 26

Putting a sum in the same column as the raw data will make downstream work more difficult. Unless you already have downstream code that requires the data be in this layout.

--
Paige Miller
sahoositaram555
Pyrite | Level 9
It's fine if the sum value is coming in a new column along with the prerequisite values, but the intention is not to disturb the rows. i.e. basically for monday,
monday 13 13
monday 12 12
tuesday . 25
something like above would work too!
PaigeMiller
Diamond | Level 26
proc sql;
     create table want as select *,sum(var2) as sum_var2
     from have
     group by var1;
run;
--
Paige Miller
Tom
Super User Tom
Super User

PROC SUMMARY (aka MEANS) is best tool for calculating sums.

data xyz;
  input var1 :$9. var2;
cards;
monday 13
monday 12
tuesday 10
tuesday 23
wednesday 34
wednesday 43
;

proc summary data=xyz nway;
  class var1;
  var var2;
  output out=total sum=;
run;

data want;
  set xyz total;
  by var1;
run;

Note that I purposely left the _TYPE_ and _FREQ_ variables that PROC SUMMARY added in the dataset so you can tell which observations are the totals.

Tom_0-1721836390660.png

 

Ksharp
Super User

It seems that is an interview question.

Nonsense for real world.

 

data xyz;
input var1 :$20. var2;
cards;
monday 13
monday 12
total .  
tuesday 10
tuesday 23
total .
wednesday 34
wednesday 43
total .
;

data want;
 set xyz;
 cum+var2;
 if var1='total' then do;var2=cum;cum=.;end;
 drop cum;
run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 917 views
  • 3 likes
  • 4 in conversation