<?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: Using DATA STEP to convert several obs per subject to one obs with several subjects in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179428#M45799</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;data have;
&amp;nbsp; infile cards; 
&amp;nbsp; input
&amp;nbsp;&amp;nbsp;&amp;nbsp; Subj : 8.
&amp;nbsp;&amp;nbsp;&amp;nbsp; Score : 8.
&amp;nbsp; ;
&amp;nbsp; cards; 
001 7
001 6
001 5
001 5
001 4
002 8
002 7
002 6
002 6
; 
run;
data have;
 set have;
 by subj;
 if first.subj then n=0;
 n+1;
 run;
proc sort data=have(keep=n) out=key nodupkey;by n;run;
data _null_;
 set key end=last;
 if _n_ eq 1 then call execute('data want;merge ');
 call execute(cats('have(rename=(Score=Score',n,') where=(n=',n,') )'));
 if last then call execute(';by Subj;drop n;run;');
run;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 10 Oct 2014 14:02:24 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2014-10-10T14:02:24Z</dc:date>
    <item>
      <title>Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179422#M45793</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guys, I just &lt;SPAN style="font-size: 12pt;"&gt;&lt;STRONG&gt;don't use proc transpose&lt;/STRONG&gt;&lt;/SPAN&gt; but &lt;SPAN style="font-size: 12pt;"&gt;&lt;STRONG style="color: #000000;"&gt;using data steps&lt;/STRONG&gt;&lt;/SPAN&gt;, how to convert the data have --&amp;gt;data want?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;Data have:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Obs Subj&amp;nbsp; Score&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 7&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 6&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 8&lt;/P&gt;&lt;P&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 7&lt;/P&gt;&lt;P&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 6&lt;/P&gt;&lt;P&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 6&lt;/P&gt;&lt;P&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 6&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #ff0000;"&gt;Data want:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Obs Subj S1 S2 S3 S4 S5&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001 7 6 5 5 4&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002 8 7 6 6 6&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 003 8 7 6 6 5&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;I wrote the following codes:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;proc sort data=one;&lt;/P&gt;&lt;P&gt;by Subj;&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;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; by Subj;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array S{5};&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 5;&lt;/P&gt;&lt;P&gt;&amp;nbsp; retain S1-S5;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if first.Subj then call missing(of S1-S5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; S{i}=Score; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if last.Subj then output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It comes out 3*5=15 observations, I guess the problem is raised by do loop, but how can I justify it?&lt;/P&gt;&lt;P&gt;Thank you so much.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Chouchou&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Oct 2014 23:26:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179422#M45793</guid>
      <dc:creator>chouchou</dc:creator>
      <dc:date>2014-10-09T23:26:52Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179423#M45794</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;proc sort data=have;&lt;BR /&gt;by Subj;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;&amp;nbsp; do _n_=1 to 5;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set have;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; by Subj;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; array S{5};&lt;BR /&gt;&amp;nbsp;&amp;nbsp; S{_n_}=Score;&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Oct 2014 00:06:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179423#M45794</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-10-10T00:06:31Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179424#M45795</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Remove the do loop entirely but add another counter so you know what record your on for each id. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Oct 2014 03:17:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179424#M45795</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-10-10T03:17:35Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179425#M45796</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you just logically step though your program you will see the logic error.&lt;/P&gt;&lt;P&gt;When it reads the first observation from HAVE it will execute the DO loop 5 times and copy the same value into all five variables in the array.&lt;/P&gt;&lt;P&gt;Then when it reads the next observation from HAVE it will do the same thing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One simple pattern that can help with this is what is called a DOW loop. There are a number of papers you can read on it. Here is a recent one:&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/resources/papers/proceedings14/1619-2014.pdf" title="http://support.sas.com/resources/papers/proceedings14/1619-2014.pdf"&gt;http://support.sas.com/resources/papers/proceedings14/1619-2014.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It eliminates the need for the RETAIN and the CALL MISSING().&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;%let max=5 ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;data want ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; do i=1 by 1 until (last.subj);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by subj ;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array s (&amp;amp;max);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s(i) = score;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You might want to add a step to pre-calculate the maximum size to use for your array.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;proc sql noprint ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp; select max(count) into :max separated by ' '&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from (select subj,count(*) as count from have group by subj) &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;quit;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Oct 2014 05:01:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179425#M45796</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2014-10-10T05:01:56Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179426#M45797</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your code gives 15 observation in the output because you have the code:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;if last.Subj then output;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;inside the do loop therefore when the condition is true it writes 5 observations to the output , one for every step of do loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A number of solutions have been presented here therefore you have a choice &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>Fri, 10 Oct 2014 07:35:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179426#M45797</guid>
      <dc:creator>Loko</dc:creator>
      <dc:date>2014-10-10T07:35:35Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179427#M45798</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;You can use the DATA Step loop to fill the array elements. To make it more dynamic you can find out first how many array elements you need. See sample code below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="font-family: Consolas; font-size: 11pt;"&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; have;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;infile&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;cards&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subj : &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;8.&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Score : &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;8.&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;cards&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffc0;"&gt;001 7&lt;BR /&gt;001 6&lt;BR /&gt;001 5&lt;BR /&gt;001 5&lt;BR /&gt;001 4&lt;BR /&gt;002 8&lt;BR /&gt;002 7&lt;BR /&gt;002 6&lt;BR /&gt;002 6&lt;BR /&gt;&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;sql&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;noprint&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;select&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; max( maxN ) &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;into&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; :maxN trimmed&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;from&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; (&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;select&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subj&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , count(*) &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; maxN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;from&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; have&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;group&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subj&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;quit&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; NOTE: &amp;amp;=maxN;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; want;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; have;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; Subj;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;array&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; S{&amp;amp;maxN};&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; S1 - S&amp;amp;maxN;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; first.Subj &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;do&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;call&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; missing(of S{*});&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;0&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; i + &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; S{i} = Score;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; last.Subj &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;do&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;output&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;keep&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; subj S1 - S&amp;amp;maxN;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Oct 2014 11:59:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179427#M45798</guid>
      <dc:creator>BrunoMueller</dc:creator>
      <dc:date>2014-10-10T11:59:06Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179428#M45799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;data have;
&amp;nbsp; infile cards; 
&amp;nbsp; input
&amp;nbsp;&amp;nbsp;&amp;nbsp; Subj : 8.
&amp;nbsp;&amp;nbsp;&amp;nbsp; Score : 8.
&amp;nbsp; ;
&amp;nbsp; cards; 
001 7
001 6
001 5
001 5
001 4
002 8
002 7
002 6
002 6
; 
run;
data have;
 set have;
 by subj;
 if first.subj then n=0;
 n+1;
 run;
proc sort data=have(keep=n) out=key nodupkey;by n;run;
data _null_;
 set key end=last;
 if _n_ eq 1 then call execute('data want;merge ');
 call execute(cats('have(rename=(Score=Score',n,') where=(n=',n,') )'));
 if last then call execute(';by Subj;drop n;run;');
run;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Oct 2014 14:02:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179428#M45799</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2014-10-10T14:02:24Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179429#M45800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The result is&lt;/P&gt;&lt;P&gt;Subj Score S1 S2 S3 S4 S5&lt;/P&gt;&lt;P&gt;001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;just one obs, not two&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>Sat, 11 Oct 2014 00:32:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179429#M45800</guid>
      <dc:creator>chouchou</dc:creator>
      <dc:date>2014-10-11T00:32:07Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179430#M45801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Not sure, but I am getting two obs&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data have;&lt;BR /&gt;input Obs Subj&amp;nbsp; Score;&lt;BR /&gt;datalines;&lt;BR /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 7&lt;BR /&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 6&lt;BR /&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 5&lt;BR /&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 5&lt;BR /&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 001&amp;nbsp; 4&lt;BR /&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 8&lt;BR /&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 7&lt;BR /&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 6&lt;BR /&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 6&lt;BR /&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 002&amp;nbsp; 6&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;proc sort data=have;&lt;BR /&gt;by Subj;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;&amp;nbsp; do _n_=1 to 5;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set have;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; by Subj;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; array S{5};&lt;BR /&gt;&amp;nbsp;&amp;nbsp; S{_n_}=Score;&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Oct 2014 01:03:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179430#M45801</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-10-11T01:03:11Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179431#M45802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi loko, can you please explain me why it has both 4 and 5 for Subj001, while it only has 6 for Subj002? I would greatly appreciate your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subj&amp;nbsp;&amp;nbsp;&amp;nbsp; Score&amp;nbsp;&amp;nbsp;&amp;nbsp; S1&amp;nbsp;&amp;nbsp;&amp;nbsp; S2&amp;nbsp;&amp;nbsp;&amp;nbsp; S3&amp;nbsp;&amp;nbsp;&amp;nbsp; S4&amp;nbsp;&amp;nbsp;&amp;nbsp; S5&amp;nbsp;&amp;nbsp;&amp;nbsp; i&lt;/P&gt;&lt;P&gt;001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;001&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;001&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt; 5&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 &lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;001&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt; 5 &lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;001&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;002&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; &lt;/STRONG&gt;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;002&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6 &lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;002&amp;nbsp;&amp;nbsp; &lt;STRONG&gt; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6 &lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;002&amp;nbsp;&amp;nbsp; &lt;STRONG&gt; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;002&amp;nbsp;&amp;nbsp; &lt;STRONG&gt; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Oct 2014 01:03:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179431#M45802</guid>
      <dc:creator>chouchou</dc:creator>
      <dc:date>2014-10-11T01:03:26Z</dc:date>
    </item>
    <item>
      <title>Re: Using DATA STEP to convert several obs per subject to one obs with several subjects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179432#M45803</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It's pretty weird. I just copied your code and it resolved to one obs.&lt;/P&gt;&lt;P&gt;:smileyconfused:&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Oct 2014 01:10:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-DATA-STEP-to-convert-several-obs-per-subject-to-one-obs/m-p/179432#M45803</guid>
      <dc:creator>chouchou</dc:creator>
      <dc:date>2014-10-11T01:10:20Z</dc:date>
    </item>
  </channel>
</rss>

