<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Generating a new variable... do loop? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114270#M23547</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Wrong? Well, your code runs fine, it will give you 3*4*60*60=43200 obs as being expected. For every obs from work1, you will go through 3*4*60 cycle with output. What you need here is not a regular loop. You need a loop call DOW (try google it to learn): and yes, _n_=1 all the time. if you need a counter , replace n=_n_ with n+1; although it seems harmless,&amp;nbsp; I don't know how you set your 'repeat' up limit as '60', it is actually 60/4/3=5. You can get it before hand by using nobs= ; I have also moved your drop statement to incoming data set, for better efficiency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data work2;&lt;/P&gt;&lt;P&gt;Do repeat = 1 to nobs/4/3 ;&lt;/P&gt;&lt;P&gt;Do type = 1 to 4 ;&lt;/P&gt;&lt;P&gt;Do times = 1 to 3 ;&lt;/P&gt;&lt;P&gt;set work1 (drop=_name_) nobs=nobs;&lt;/P&gt;&lt;P&gt;n=_n_; /*n+1;*/&lt;/P&gt;&lt;P&gt;format type typeformat. style styleformat.;&lt;/P&gt;&lt;P&gt;Output ;&lt;/P&gt;&lt;P&gt;End ;&lt;/P&gt;&lt;P&gt;End ;&lt;/P&gt;&lt;P&gt;End ;&lt;/P&gt;&lt;P&gt;/*Drop _name_;*/&lt;/P&gt;&lt;P&gt;Run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Update: After going through this thread one more time, it turns out that Richard has already provided a solid solution, if you only need 'type':&lt;/P&gt;&lt;P&gt;data work2;&lt;/P&gt;&lt;P&gt;set work1;&lt;/P&gt;&lt;P&gt;type=1+mod(ceil(_n_/4)-1,4);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 02 Nov 2012 13:35:24 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2012-11-02T13:35:24Z</dc:date>
    <item>
      <title>Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114257#M23534</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am a SAS amateur, so forgive me if this is a silly Q.&lt;/P&gt;&lt;P&gt;I need to generate a variable "type" which is...&lt;/P&gt;&lt;P&gt;1&lt;/P&gt;&lt;P&gt;1&lt;/P&gt;&lt;P&gt;1&lt;/P&gt;&lt;P&gt;2&lt;/P&gt;&lt;P&gt;2&lt;/P&gt;&lt;P&gt;2&lt;/P&gt;&lt;P&gt;3&lt;/P&gt;&lt;P&gt;3&lt;/P&gt;&lt;P&gt;3&lt;/P&gt;&lt;P&gt;1&lt;/P&gt;&lt;P&gt;1&lt;/P&gt;&lt;P&gt;1&lt;/P&gt;&lt;P&gt;2&lt;/P&gt;&lt;P&gt;2&lt;/P&gt;&lt;P&gt;...etc&lt;/P&gt;&lt;P&gt;So 111 222 333 repeated, until a specific N. (Say N=45)&lt;/P&gt;&lt;P&gt;How can I do this without manually typing it in? I guess a Do Loop? So far I have N=_N_ for the observation numbers to be a variable N, and I guess I should do some sort of equation for Type=...(something to do with N like modulo) ? &lt;/P&gt;&lt;P&gt;I have tried this and got no where. Also, every time I manage some form of do loop, the numbers 111222333 are next to each N, making 9 times as many data rows! &lt;/P&gt;&lt;P&gt;So stuck.&lt;/P&gt;&lt;P&gt;Can anyone help?&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 09:32:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114257#M23534</guid>
      <dc:creator>katiexyz</dc:creator>
      <dc:date>2012-11-01T09:32:56Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114258#M23535</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Data want ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do repeat = 1 to 45 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do type = 1 to 3 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do times = 1 to 3 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Drop repeat times ;&lt;/P&gt;&lt;P&gt;Run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Richard in Oz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 11:17:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114258#M23535</guid>
      <dc:creator>RichardinOz</dc:creator>
      <dc:date>2012-11-01T11:17:45Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114259#M23536</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hope the above is what you want.&amp;nbsp; The first loop sets the overall number of pattern repeats, the second cycles the value of type, and the third duplicated the type value 3 times.&amp;nbsp; The key statement is OUTPUT, which controls when the datastep pushes a value to the output table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You could make the number of repeats driven by a macro variable&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%Let control = 45 ;&lt;/P&gt;&lt;P&gt;Data want ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do repeat = 1 to &amp;amp;control ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;etc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Richard in Oz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 11:24:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114259#M23536</guid>
      <dc:creator>RichardinOz</dc:creator>
      <dc:date>2012-11-01T11:24:17Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114260#M23537</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A couple of questions before I suggest anything.&amp;nbsp; First, is N always a multiple of 9, with 3 levels of 3 each?&amp;nbsp; If so, then the following might work:&lt;/P&gt;&lt;P&gt;/* Make up some data */&lt;/P&gt;&lt;P&gt;data one;&lt;BR /&gt;do i = 1 to 45;&lt;BR /&gt;output; &lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data two;&lt;BR /&gt;set one;&lt;/P&gt;&lt;P&gt;k=mod(_n_,9); /* This depends on the question I asked - Does the pattern always depend on three sets of three? */&lt;BR /&gt;if k=0 then k1=9;&lt;BR /&gt;else k1=k; /* Sets the values with remainder=0 to remainder=9 */&lt;BR /&gt;kceil=ceil(k1/3); /* Generates what you need */&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am sure that those who are better programmers than me will come up with something more general, but this may get you started.&amp;nbsp; The second datastep is key, and could be applied to any&lt;/P&gt;&lt;P&gt;dataset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Steve Denham&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Steve Denham&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 11:30:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114260#M23537</guid>
      <dc:creator>SteveDenham</dc:creator>
      <dc:date>2012-11-01T11:30:22Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114261#M23538</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks&amp;nbsp; Richard and Steve!&lt;/P&gt;&lt;P&gt;I am not down with macros yet but both of the other methods worked!&lt;/P&gt;&lt;P&gt;Thanks for your help &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 11:41:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114261#M23538</guid>
      <dc:creator>katiexyz</dc:creator>
      <dc:date>2012-11-01T11:41:57Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114262#M23539</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok, the following constructs may give you more control over what you expect to have:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Option1: if you want the same pattern repeats until the total obs reach 45*/&lt;/P&gt;&lt;P&gt;data want1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do type=1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 3;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; n+1;&lt;/P&gt;&lt;P&gt;if n&amp;gt;=45 then stop;&lt;/P&gt;&lt;P&gt;end; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if type=3 then type=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Option2: same pattern repeats until the number of 3x1 blocks reaches 45*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do type=1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 3;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if type=3 then type=0;&lt;/P&gt;&lt;P&gt;n+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if n&amp;gt;=45 then stop;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Option3: Same pattern repeats until the number of 3x3 blocks reaches 45, same as Richard's suggestion*/&lt;/P&gt;&lt;P&gt;data want3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do type=1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 3;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if type=3 then do; n+1;type=0;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if n&amp;gt;=45 then stop;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The key part of the code is: "if type=3 then type=0;", that makes you an infinite loop; then depending on where you insert your counter and switch, you can get different outcomes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck!&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 14:03:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114262#M23539</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-11-01T14:03:35Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114263#M23540</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't know what has happened... i changed a variable name, and now when i run, i am getting 18255 data rows &lt;img id="smileysad" class="emoticon emoticon-smileysad" src="https://communities.sas.com/i/smilies/16x16_smiley-sad.png" alt="Smiley Sad" title="Smiley Sad" /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 16:26:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114263#M23540</guid>
      <dc:creator>katiexyz</dc:creator>
      <dc:date>2012-11-01T16:26:51Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114264#M23541</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Let's see your code if you don't mind.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 16:48:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114264#M23541</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-11-01T16:48:46Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114265#M23542</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data work2;&lt;/P&gt;&lt;P&gt;set work1;&lt;/P&gt;&lt;P&gt;n=_n_;&lt;/P&gt;&lt;P&gt;format type typeformat. intermediate intermediateformat.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then&lt;/P&gt;&lt;P&gt;input type;cards; blahblah...&lt;/P&gt;&lt;P&gt;or paste your code in.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when i proc print work1 it prints perfectly. and in work2 i am only adding the variable "type", so it must be something here. &lt;img id="smileysad" class="emoticon emoticon-smileysad" src="https://communities.sas.com/i/smilies/16x16_smiley-sad.png" alt="Smiley Sad" title="Smiley Sad" /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 16:59:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114265#M23542</guid>
      <dc:creator>katiexyz</dc:creator>
      <dc:date>2012-11-01T16:59:26Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114266#M23543</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That doesn't appear to be a complete program .. at least not one that would run.&amp;nbsp; Post both sets of the code that you actually ran for creating work1 and work2, as well as your log.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 17:06:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114266#M23543</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-01T17:06:49Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114267#M23544</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am confused here, are you saying you use 'set' statement along with 'input, cards'? What is purpose of that? how do you get 'work1'? code please?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Nov 2012 17:09:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114267#M23544</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-11-01T17:09:28Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114268#M23545</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you already have a dataset and just want to add the type column, here is a solution.&amp;nbsp; Note that the CEIL() function is like INT() but rounds up to the next integer. The MOD() function is the remainder when you do integer division.&amp;nbsp; This will work in the pattern you want for however many rows you have.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data want ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; type = 1 + mod(ceil(_n_/3)-1, 3) ;&lt;/P&gt;&lt;P&gt;Run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Richard in Oz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Nov 2012 00:10:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114268#M23545</guid>
      <dc:creator>RichardinOz</dc:creator>
      <dc:date>2012-11-02T00:10:17Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114269#M23546</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ods graphics on;&lt;BR /&gt;proc format;&lt;BR /&gt;value typeformat 1="X1" 2="X2" 3="X3" 4="X4";&lt;BR /&gt;value $styleformat a="Y1" b="Y2" c="Y3" d="Y4" e="Y5";&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data work;&lt;BR /&gt;input style$ r1-r12;&lt;BR /&gt;cards;&lt;BR /&gt;a 1&amp;nbsp; 2&amp;nbsp; 3 4 5 6 7 8 9 10 11 12&lt;BR /&gt;b 1&amp;nbsp; 2&amp;nbsp; 3 4 5 6 7 8 9 10 11 12&lt;BR /&gt;c 1&amp;nbsp; 2&amp;nbsp; 3 4 5 6 7 8 9 10 11 12&lt;BR /&gt;d 1&amp;nbsp; 2&amp;nbsp; 3 4 5 6 7 8 9 10 11 12&lt;BR /&gt;e 1&amp;nbsp; 2&amp;nbsp; 3 4 5 6 7 8 9 10 11 12&lt;BR /&gt;;&lt;BR /&gt;proc transpose data=work out=work1 (rename=(col1=results));&lt;BR /&gt;by style;&lt;/P&gt;&lt;P&gt;data work2;&lt;/P&gt;&lt;P&gt;set work1;&lt;BR /&gt;n=_n_;&lt;BR /&gt;format type typeformat. style styleformat.;&lt;BR /&gt;Do repeat = 1 to 60 ;&lt;BR /&gt;Do type = 1 to 4 ;&lt;BR /&gt;Do times = 1 to 3 ;&lt;BR /&gt;Output ;&lt;BR /&gt;End ;&lt;BR /&gt;End ;&lt;BR /&gt;End ;&lt;BR /&gt;Drop _name_;&lt;BR /&gt;Run ;&lt;BR /&gt;proc print data=work2;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is where N=60, not 45. And using Richard's earlier method.&lt;/P&gt;&lt;P&gt;Okay I changed the data and the names obviously because this is work stuff. I was given data which was:&lt;/P&gt;&lt;P&gt;factor:"style" which has 5 levels a,b,c,d,e&lt;/P&gt;&lt;P&gt;factor:"type" which has 4 levels 1,2,3,4&lt;/P&gt;&lt;P&gt;And there are 3 repeats of each combination&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;a [1&amp;nbsp; 2&amp;nbsp; 3][ 4 5 6] [7 8 9] [10 11 12]&lt;/P&gt;&lt;P&gt;b [1&amp;nbsp; 2&amp;nbsp; 3][ 4 5 6] [7 8 9] [10 11 12]&lt;/P&gt;&lt;P&gt;c [1&amp;nbsp; 2&amp;nbsp; 3][ 4 5 6] [7 8 9] [10 11 12]&lt;/P&gt;&lt;P&gt;d [1&amp;nbsp; 2&amp;nbsp; 3][ 4 5 6] [7 8 9] [10 11 12]&lt;/P&gt;&lt;P&gt;e [1&amp;nbsp; 2&amp;nbsp; 3][ 4 5 6] [7 8 9] [10 11 12]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So that's what data I was given, I input style and the results, transposed it, added "type".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wrong? &lt;img id="smileysad" class="emoticon emoticon-smileysad" src="https://communities.sas.com/i/smilies/16x16_smiley-sad.png" alt="Smiley Sad" title="Smiley Sad" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Nov 2012 08:41:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114269#M23546</guid>
      <dc:creator>katiexyz</dc:creator>
      <dc:date>2012-11-02T08:41:27Z</dc:date>
    </item>
    <item>
      <title>Re: Generating a new variable... do loop?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114270#M23547</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Wrong? Well, your code runs fine, it will give you 3*4*60*60=43200 obs as being expected. For every obs from work1, you will go through 3*4*60 cycle with output. What you need here is not a regular loop. You need a loop call DOW (try google it to learn): and yes, _n_=1 all the time. if you need a counter , replace n=_n_ with n+1; although it seems harmless,&amp;nbsp; I don't know how you set your 'repeat' up limit as '60', it is actually 60/4/3=5. You can get it before hand by using nobs= ; I have also moved your drop statement to incoming data set, for better efficiency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data work2;&lt;/P&gt;&lt;P&gt;Do repeat = 1 to nobs/4/3 ;&lt;/P&gt;&lt;P&gt;Do type = 1 to 4 ;&lt;/P&gt;&lt;P&gt;Do times = 1 to 3 ;&lt;/P&gt;&lt;P&gt;set work1 (drop=_name_) nobs=nobs;&lt;/P&gt;&lt;P&gt;n=_n_; /*n+1;*/&lt;/P&gt;&lt;P&gt;format type typeformat. style styleformat.;&lt;/P&gt;&lt;P&gt;Output ;&lt;/P&gt;&lt;P&gt;End ;&lt;/P&gt;&lt;P&gt;End ;&lt;/P&gt;&lt;P&gt;End ;&lt;/P&gt;&lt;P&gt;/*Drop _name_;*/&lt;/P&gt;&lt;P&gt;Run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Update: After going through this thread one more time, it turns out that Richard has already provided a solid solution, if you only need 'type':&lt;/P&gt;&lt;P&gt;data work2;&lt;/P&gt;&lt;P&gt;set work1;&lt;/P&gt;&lt;P&gt;type=1+mod(ceil(_n_/4)-1,4);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Nov 2012 13:35:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Generating-a-new-variable-do-loop/m-p/114270#M23547</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-11-02T13:35:24Z</dc:date>
    </item>
  </channel>
</rss>

