DATA Step, Macro, Functions and more

Last observation: total of column

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 5
Accepted Solution

Last observation: total of column

Hi,

 

I have a csv table, and at the end of each column, I have the total of the column that appears. I would separate the last line, and that the line is not an observation but the total.

 

.....  , ......             , ...;

02/10/2016,126,473
03/10/2016,213,648
04/10/2016,242,809
05/10/2016,235,807
06/10/2016,285,1013
07/10/2016,260,905
08/10/2016,132,400
09/10/2016,150,446
10/10/2016,256,655

11/10/2016,249,790

,611246,1864947

,611246,1864947  here in the last line, the total of column 2 and 3.

I want :                                                   ...             .........            ....        ....


sas.JPG

 

Thank you for your help.


Accepted Solutions
Solution
‎11-08-2016 07:31 AM
Super User
Posts: 9,691

Re: Last observation: total of column


filename x temp;
data _null_;
file x;
input;
put _infile_;
datalines;
02/10/2016,126,473
03/10/2016,213,648
04/10/2016,242,809
05/10/2016,235,807
06/10/2016,285,1013
07/10/2016,260,905
08/10/2016,132,400
09/10/2016,150,446
10/10/2016,256,655
11/10/2016,249,790
,611246,1864947
;
run;



data have;
length id $ 20;
infile x dsd truncover end=last;
input date : ddmmyy10. x y;
format date ddmmyy10.;
id=put(_n_,best. -l);
if last then id='Total';
run;
proc print noobs;run;


View solution in original post


All Replies
Trusted Advisor
Posts: 1,401

Re: Last observation: total of column

Pay attention that TOTAL rows are with missing date.

 

If you use PROC IMPORT then you need add a second step, otherwise you can do it in same data step

reading your csv file to sas:

 

data want; set have;

    if date = . then delete;  /* or if missing(date) then delete */

run;

Solution
‎11-08-2016 07:31 AM
Super User
Posts: 9,691

Re: Last observation: total of column


filename x temp;
data _null_;
file x;
input;
put _infile_;
datalines;
02/10/2016,126,473
03/10/2016,213,648
04/10/2016,242,809
05/10/2016,235,807
06/10/2016,285,1013
07/10/2016,260,905
08/10/2016,132,400
09/10/2016,150,446
10/10/2016,256,655
11/10/2016,249,790
,611246,1864947
;
run;



data have;
length id $ 20;
infile x dsd truncover end=last;
input date : ddmmyy10. x y;
format date ddmmyy10.;
id=put(_n_,best. -l);
if last then id='Total';
run;
proc print noobs;run;


☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 221 views
  • 0 likes
  • 3 in conversation