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;
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
  • 2299 views
  • 3 likes
  • 4 in conversation