Solved
Contributor
Posts: 44

looping collapse seconds to minutes

Hi -

I want to write a loop to collapse my seconds level dummy variables (from 0:00:00 to 23:59:59, 86400 variables in total) to minutes level varibales(sum all seconds within one minute), right now my data looks like this:

id second1 second2 second3 ........ seconds86398 seconds86399 seconds86400

1   1            1             .                      .                              1                      1

2                                                             1                        1                      1

3   1            1             1

The ideal dataset is like this

id   min1 min2 min3 .........  min1439 min1440

1    2       0      0                          0         2

2    0       0      0                          30      45

3    32      24   39                         0       0

Without looping, I have to type the code for 1440 times:

``````data want;
set have;
min1 = sum(of second1-seconds60);
min2 = sum(of seconds61-seconds120);
min3 = sum(of second121-seconds180);
......
min1440 = sum(of seconds86340- seconds86400);
run;``````

Any idea?

Thanks!

Accepted Solutions
Solution
‎08-08-2017 12:34 PM
SAS Super FREQ
Posts: 503

Re: looping collapse seconds to minutes

You could do this with a series of arrays and programming statements, but it is probably easiest to use the macro language.

``````data want;
set have;
%macro loop;
%do i = 1 %to 1440;
min&i = sum(of seconds%eval((&i-1)*60+1) - seconds%eval(&i*60));
%end;
%mend;
%loop;
run;
``````

All Replies
Solution
‎08-08-2017 12:34 PM
SAS Super FREQ
Posts: 503

Re: looping collapse seconds to minutes

You could do this with a series of arrays and programming statements, but it is probably easiest to use the macro language.

``````data want;
set have;
%macro loop;
%do i = 1 %to 1440;
min&i = sum(of seconds%eval((&i-1)*60+1) - seconds%eval(&i*60));
%end;
%mend;
%loop;
run;
``````
Contributor
Posts: 44