<?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: Data Manipulation Question? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181405#M265202</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark, Sorry I didn't realise you were reading from a SAS dataset as RW9's example or @Astounding 's example illustrates.&amp;nbsp; Here is also a way:&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input a b c d e f g h i j;&lt;BR /&gt;datalines;&lt;BR /&gt;1 1 2 1 2 3 1 2 3 4 &lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;data restruct;&lt;BR /&gt;set have;&lt;BR /&gt;array k _numeric_;&lt;BR /&gt;do l=1 to dim(k);&lt;BR /&gt;new=k(l);&lt;BR /&gt;r=lag(new);&lt;BR /&gt;if new=1 then group+1;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;keep new r group;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data want;&lt;BR /&gt;array var(4)a b c d;&lt;BR /&gt;call missing (of var{*});&lt;BR /&gt;do until (last.group);&lt;BR /&gt;set restruct;&lt;BR /&gt;by group;&lt;BR /&gt;if new ne 1 then var(r)= r;&lt;BR /&gt;var(sum(r,1))=new;&lt;BR /&gt;end;&lt;BR /&gt;keep a b c d;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;&lt;P&gt;L&amp;amp;T Infotech&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Mar 2015 10:58:33 GMT</pubDate>
    <dc:creator>naveen_srini</dc:creator>
    <dc:date>2015-03-04T10:58:33Z</dc:date>
    <item>
      <title>Data Manipulation Question?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181401#M265198</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HAVE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;a&amp;nbsp; b c d e&amp;nbsp; f g h&amp;nbsp; i J&lt;BR /&gt;1 1 2 1 2 3 1 2 3 4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; WANT&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;a&amp;nbsp; b c d&lt;BR /&gt;1&amp;nbsp;&amp;nbsp; &lt;BR /&gt;1 2&amp;nbsp; &lt;BR /&gt;1 2 3 &lt;BR /&gt;1 2 3 4&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Feb 2015 10:32:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181401#M265198</guid>
      <dc:creator>MarkWik</dc:creator>
      <dc:date>2015-02-25T10:32:57Z</dc:date>
    </item>
    <item>
      <title>Re: Data Manipulation Question?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181402#M265199</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp; The code below does what you want:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want ( keep =&amp;nbsp; a--d ) ;&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; infile datalines dsd truncover ;&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; array k (4)a b c d ;&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; n + 1 ;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; if n &amp;gt; 4 then n = 1 ;&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; if n = 1 then&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 ;&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; m + 1 ;&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;&amp;nbsp;&amp;nbsp; &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; if _n_ &amp;gt; 1 then input ;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to n ;&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; input k ( i ) @@ ;&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;&amp;nbsp; datalines ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,1,2,1,2,3,1,2,3,4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;Naveen&lt;/P&gt;&lt;P&gt;L&amp;amp;T Infotech&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Mar 2015 08:03:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181402#M265199</guid>
      <dc:creator>naveen_srini</dc:creator>
      <dc:date>2015-03-02T08:03:39Z</dc:date>
    </item>
    <item>
      <title>Re: Data Manipulation Question?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181403#M265200</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It simply a matter of setting the table four times, keeping the data you want and renaming the columns:&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;a=1;&amp;nbsp; b=1; c=2; d=1; e=2;&amp;nbsp; f=3; g=1; h=2;&amp;nbsp; i=3; J=4; &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;output;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have (keep=a)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; have (keep=b c rename=(b=a c=b))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; have (keep=d e f rename=(d=a e=b f=c))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; have (keep=g h i j rename=(g=a h=b i=c j=d));&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Mar 2015 09:49:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181403#M265200</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-03-02T09:49:52Z</dc:date>
    </item>
    <item>
      <title>Re: Data Manipulation Question?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181404#M265201</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I believe this is a trickier problem than it appears at first glance, so here's my stab at it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array old {10} a b c d e f g h i j;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array new {10} new1-new10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do _i_=1 to 10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add_next=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do _k_=1 to 10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if old{_k_} = new{_i_} then add_next=0;&lt;/P&gt;&lt;P&gt;&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; if add_next=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next_var + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new{next_var} = old{_i_};&lt;/P&gt;&lt;P&gt;&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; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; keep new1-new10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rename new1=a new2=b new3=c new4=d new5=e new6=f new7=g new8=h new9=i new10=j;&lt;/P&gt;&lt;P&gt;run;&lt;BR /&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;It's a headache to look at, and is untested at this point.&amp;nbsp; But it should give you what you need.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Mar 2015 15:54:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181404#M265201</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2015-03-02T15:54:00Z</dc:date>
    </item>
    <item>
      <title>Re: Data Manipulation Question?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181405#M265202</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark, Sorry I didn't realise you were reading from a SAS dataset as RW9's example or @Astounding 's example illustrates.&amp;nbsp; Here is also a way:&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input a b c d e f g h i j;&lt;BR /&gt;datalines;&lt;BR /&gt;1 1 2 1 2 3 1 2 3 4 &lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;data restruct;&lt;BR /&gt;set have;&lt;BR /&gt;array k _numeric_;&lt;BR /&gt;do l=1 to dim(k);&lt;BR /&gt;new=k(l);&lt;BR /&gt;r=lag(new);&lt;BR /&gt;if new=1 then group+1;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;keep new r group;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data want;&lt;BR /&gt;array var(4)a b c d;&lt;BR /&gt;call missing (of var{*});&lt;BR /&gt;do until (last.group);&lt;BR /&gt;set restruct;&lt;BR /&gt;by group;&lt;BR /&gt;if new ne 1 then var(r)= r;&lt;BR /&gt;var(sum(r,1))=new;&lt;BR /&gt;end;&lt;BR /&gt;keep a b c d;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;&lt;P&gt;L&amp;amp;T Infotech&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 10:58:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181405#M265202</guid>
      <dc:creator>naveen_srini</dc:creator>
      <dc:date>2015-03-04T10:58:33Z</dc:date>
    </item>
    <item>
      <title>Re: Data Manipulation Question?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181406#M265203</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you @Astounding @naveen_srini&amp;nbsp; @RW9 for helping me out. @Naveen: your answers gives the exact wanted output and a very well thought out logic. But Robert Virgile's works more efficiently although requires little more tweaking to match the exact wanted output. I fancy @Astounding's code that &lt;STRONG&gt;does it one pass&lt;/STRONG&gt; and would mark his as correct, nevertheless many many thanks Naveen and RW for the code help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 15:04:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Manipulation-Question/m-p/181406#M265203</guid>
      <dc:creator>MarkWik</dc:creator>
      <dc:date>2015-03-04T15:04:48Z</dc:date>
    </item>
  </channel>
</rss>

