Desktop productivity for business analysts and programmers

Rename columns and array operation using a loop

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 80
Accepted Solution

Rename columns and array operation using a loop

/* data have */
Class Time_0 Time_1 Time_2
  A      1     2      4
  B      0     3      9
  C      3     6      0

/* data want */
Class _01 _12
  A    2    2
  B    1    3
  C    2    0

 

 Rule 1: In data 'want', column '_01' = column 'Time_1' / 'Time_0' from data 'have'.

               '_12' = 'Time_2' / 'Time_1'.

               ....

Rule 2: If divisor = 0 then result = 1.

 

Because my actual data have more than 100 'time' columns: Time_0-Time_&Num  (Num is a global macro variable), would prefer using a loop rather than hardcode it.

Thanks.


Accepted Solutions
Solution
‎03-15-2017 12:41 AM
Super User
Posts: 5,353

Re: Rename columns and array operation using a loop

The naming of the new columns might be a little different here.  The name is based on the numerator (but not the denominator):

 

data want;

set have;

array times {0:&num} time_0 - time_#

array ratios {&num} _001 - _#

do i=1 to #

   if times{i-1} = 0 then ratios{i)=0;

   else ratios{i} = times{i} / times{i-1};

end;

drop i;

run;

 

If you would like, you can also drop all the TIME variables as well.

View solution in original post


All Replies
Solution
‎03-15-2017 12:41 AM
Super User
Posts: 5,353

Re: Rename columns and array operation using a loop

The naming of the new columns might be a little different here.  The name is based on the numerator (but not the denominator):

 

data want;

set have;

array times {0:&num} time_0 - time_#

array ratios {&num} _001 - _#

do i=1 to #

   if times{i-1} = 0 then ratios{i)=0;

   else ratios{i} = times{i} / times{i-1};

end;

drop i;

run;

 

If you would like, you can also drop all the TIME variables as well.

Super User
Super User
Posts: 7,682

Re: Rename columns and array operation using a loop

You are mixing up usage here.  Columns names are for identification in the programming, they are not meant to be used as data.  

☑ This topic is solved.

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

Discussion stats
  • 2 replies
  • 271 views
  • 4 likes
  • 3 in conversation