Desktop productivity for business analysts and programmers

Nested Loop and splitting

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

Nested Loop and splitting

 

Hi SAS Community,

 

     i have data set and i want to split three variable and run nested loop of three and generate new data set. i am from java background so it is very difficult for me to do this. please can you help to provide hint or solution.

 

Below is Required Data set

 

data company_data;
infile datalines dsd;
input $warehouse factory $ store $ product $ address $;
datalines;
"11,22","24,27","12,23","ABC"
"1,2,3","6,7","3,2","CDE"
"72,73","10,20,30,24","4,5,6,7","IJK"
;

company.PNG

 

 

Required Result

result.PNG

 

i wan to generate all possible combination of factory, store and product and i have tried but it is not useful show code here because it is not working properly.

 

Thank You,

  

 


Accepted Solutions
Solution
‎02-05-2018 06:24 AM
Super Contributor
Posts: 344

Re: Nested Loop and splitting

Three nested it is Smiley Happy

 

data out;
  set company_data;
  length fac sto pro $3;


  i1 = 1;
  fac = scan(factory,i1);

 

  do while (fac ne '');
    i2 = 1;
    sto = scan(store,i2);

    do while (sto ne '');
      i3 = 1;
      pro = scan(product,i3);

      do while (pro ne ''); 
        output;
        i3 + 1;
        pro = scan(product,i3);
      end;

      i2 + 1;
    sto = scan(store,i2);
    end;

    i1 + 1;
    fac = scan(factory,i1);
  end;
run;

 

 

//Fredrik

View solution in original post


All Replies
Solution
‎02-05-2018 06:24 AM
Super Contributor
Posts: 344

Re: Nested Loop and splitting

Three nested it is Smiley Happy

 

data out;
  set company_data;
  length fac sto pro $3;


  i1 = 1;
  fac = scan(factory,i1);

 

  do while (fac ne '');
    i2 = 1;
    sto = scan(store,i2);

    do while (sto ne '');
      i3 = 1;
      pro = scan(product,i3);

      do while (pro ne ''); 
        output;
        i3 + 1;
        pro = scan(product,i3);
      end;

      i2 + 1;
    sto = scan(store,i2);
    end;

    i1 + 1;
    fac = scan(factory,i1);
  end;
run;

 

 

//Fredrik

☑ This topic is solved.

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

Discussion stats
  • 1 reply
  • 140 views
  • 2 likes
  • 2 in conversation