<?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: Recoding dataset using an array in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133445#M27107</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data marks;&lt;/P&gt;&lt;P&gt;input subject $ A101-A107;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;English 100 200 300 400 500 600 700&lt;/P&gt;&lt;P&gt;Maths 400 500 400 550 400 500 250&lt;/P&gt;&lt;P&gt;Science 450 200 350 500 620 450 300&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data mark_col;&lt;/P&gt;&lt;P&gt;set marks;&lt;/P&gt;&lt;P&gt;array demo{7} A101-A107;&lt;/P&gt;&lt;P&gt;do i=1 to 7;&lt;/P&gt;&lt;P&gt;studentid=Vname(mark(i));&lt;/P&gt;&lt;P&gt;marks=mark(i);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;drop A101-A107 i;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* alternative Method using proc transpose */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=marks;&lt;/P&gt;&lt;P&gt;by subject;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=marks out=mark_col1(rename=(_name_=studentid col1=marks));&lt;/P&gt;&lt;P&gt;var A101-A107;&lt;/P&gt;&lt;P&gt;by subject;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 10 May 2013 01:14:50 GMT</pubDate>
    <dc:creator>siliveri4uall</dc:creator>
    <dc:date>2013-05-10T01:14:50Z</dc:date>
    <item>
      <title>Recoding dataset using an array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133443#M27105</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi folks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Suppose I have a data set consisting of scores for two subjects in student ID order, e.g.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;English 100 200 300 400 500 600 700&amp;nbsp; (real data much longer...)&lt;/P&gt;&lt;P&gt;Math 400 500 400 500 400 500 400&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to use an array (or other method) to recode this data set to look like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1 100 400&lt;/P&gt;&lt;P&gt;2 200 500&lt;/P&gt;&lt;P&gt;3 300 400&lt;/P&gt;&lt;P&gt;4 400 500&lt;/P&gt;&lt;P&gt;5 500 400&lt;/P&gt;&lt;P&gt;6 600 500&lt;/P&gt;&lt;P&gt;7 700 400&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;so that I can run a paired t-test.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wondering if someone could let me know how to do this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 May 2013 00:16:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133443#M27105</guid>
      <dc:creator>jkoonin</dc:creator>
      <dc:date>2013-05-10T00:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Recoding dataset using an array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133444#M27106</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Let's assume that your dataset is called WORK.WIDE and the variables are called COURSE and S1-S7. Like this:&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;Course&amp;nbsp;&amp;nbsp; S1&amp;nbsp; S2&amp;nbsp; S3&amp;nbsp; S4&amp;nbsp; S5&amp;nbsp; S6&amp;nbsp; S7&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;English 100 200 300 400 500 600 700&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;Math&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 500 400 500 400 500 400&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of using arrarys, I would use PROC TRANSPOSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cynthia&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;proc transpose data=wide out=long name=Student;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;id course;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;var s1-s7;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;ods listing;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;proc print data=long;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;The output from the above looks like this in the LISTING window: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Obs&amp;nbsp;&amp;nbsp;&amp;nbsp; Student&amp;nbsp;&amp;nbsp;&amp;nbsp; English&amp;nbsp;&amp;nbsp;&amp;nbsp; Math&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&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; s2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 200&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&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; s3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 300&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 700&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 May 2013 01:12:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133444#M27106</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2013-05-10T01:12:42Z</dc:date>
    </item>
    <item>
      <title>Re: Recoding dataset using an array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133445#M27107</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data marks;&lt;/P&gt;&lt;P&gt;input subject $ A101-A107;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;English 100 200 300 400 500 600 700&lt;/P&gt;&lt;P&gt;Maths 400 500 400 550 400 500 250&lt;/P&gt;&lt;P&gt;Science 450 200 350 500 620 450 300&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data mark_col;&lt;/P&gt;&lt;P&gt;set marks;&lt;/P&gt;&lt;P&gt;array demo{7} A101-A107;&lt;/P&gt;&lt;P&gt;do i=1 to 7;&lt;/P&gt;&lt;P&gt;studentid=Vname(mark(i));&lt;/P&gt;&lt;P&gt;marks=mark(i);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;drop A101-A107 i;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* alternative Method using proc transpose */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=marks;&lt;/P&gt;&lt;P&gt;by subject;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=marks out=mark_col1(rename=(_name_=studentid col1=marks));&lt;/P&gt;&lt;P&gt;var A101-A107;&lt;/P&gt;&lt;P&gt;by subject;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 May 2013 01:14:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133445#M27107</guid>
      <dc:creator>siliveri4uall</dc:creator>
      <dc:date>2013-05-10T01:14:50Z</dc:date>
    </item>
    <item>
      <title>Re: Recoding dataset using an array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133446#M27108</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@siliveri4uall,&lt;/P&gt;&lt;P&gt;If forced to use Array(), then you will have to dump everything into memory (temp array or hash) before you can rearrange them and put them back in the wanted order:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data marks;&lt;/P&gt;&lt;P&gt;input subject $ A101-A107;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;English 100 200 300 400 500 600 700&lt;/P&gt;&lt;P&gt;Maths 400 500 400 550 400 500 250&lt;/P&gt;&lt;P&gt;Science 450 200 350 500 620 450 300&lt;/P&gt;&lt;P&gt;;&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*if have to use array, such as a homework requirement*/&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select nobs into :nobs from dictionary.tables where libname='WORK' AND MEMNAME='MARKS';&lt;/P&gt;&lt;P&gt;&amp;nbsp; SELECT NVAR-1 INTO :NVAR FROM DICTIONARY.TABLES where libname='WORK' AND MEMNAME='MARKS';&lt;/P&gt;&lt;P&gt;&amp;nbsp; select cats(subject) into :vname separated by ' ' from marks;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select quote(cats(name)) into :_id separated by ', ' from dictionary.columns where libname='WORK' AND MEMNAME='MARKS' and UPCASE(NAME) NE 'SUBJECT';&lt;/P&gt;&lt;P&gt;&amp;nbsp; select cats(name)into :id separated by ' ' from dictionary.columns where libname='WORK' AND MEMNAME='MARKS' and UPCASE(NAME) NE 'SUBJECT';&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*2x dimension array()*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want_array;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array t(&amp;amp;nobs,&amp;amp;nvar) _temporary_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ARRAY sid(&amp;amp;nvar) $ _temporary_ (&amp;amp;_id);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set marks end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array id(&amp;amp;nvar) &amp;amp;id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array class(&amp;amp;nobs) &amp;amp;vname;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do i=1 to &amp;amp;nvar;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t(_n_,i)=id(i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last then do i=1 to 7;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do _n_=1 to &amp;amp;nobs;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class(_n_)=t(_n_,i);&lt;/P&gt;&lt;P&gt;&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; student_id=sid(i);&lt;/P&gt;&lt;P&gt;&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; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; keep STUDENT_ID &amp;amp;vname;&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;/*Hash*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;select cats(subject) into :_vname separated by ' ' from marks;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select cats(subject) into :vname separated by ', ' from marks;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select quote(cats(subject)) into :qvname separated by ',' from marks;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select cats(name)into :id separated by ' ' from dictionary.columns where libname='WORK' AND MEMNAME='MARKS' and UPCASE(NAME) NE 'SUBJECT';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; select quote(cats(name)) into :_id separated by ', ' from dictionary.columns where libname='WORK' AND MEMNAME='MARKS' and UPCASE(NAME) NE 'SUBJECT';&lt;/P&gt;&lt;P&gt;&amp;nbsp; select nobs into :nobs from dictionary.tables where libname='WORK' AND MEMNAME='MARKS';&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call missing (&amp;amp;vname);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; length student_id $ 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; declare hash h(ordered: 'a');&lt;/P&gt;&lt;P&gt;&amp;nbsp; h.definekey('student_id');&lt;/P&gt;&lt;P&gt;&amp;nbsp; h.definedata("student_id", &amp;amp;qvname);&lt;/P&gt;&lt;P&gt;&amp;nbsp; h.definedone();&lt;/P&gt;&lt;P&gt; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; set marks end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array id(&amp;amp;nvar) &amp;amp;id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array v(&amp;amp;nobs) &amp;amp;_vname;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ARRAY sid(&amp;amp;nvar) $ _temporary_ (&amp;amp;_id);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to dim(sid);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; student_id=sid(i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rc=h.find(); v(_n_)=id(i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rc=h.replace();&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;if last then rc=h.output(dataset:'want_hash');&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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 May 2013 03:26:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133446#M27108</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-05-10T03:26:08Z</dc:date>
    </item>
    <item>
      <title>Re: Recoding dataset using an array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133447#M27109</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is for Array .&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;PRE&gt;data marks;
input subject $ A101-A107;
cards;
English 100 200 300 400 500 600 700
Maths 400 500 400 550 400 500 250
;
run;
data _null_;
 set marks end=last;
 array x{7,2} _temporary_;
 array s{7} a:;
 do i=1 to 7;
&amp;nbsp; x{i,_n_}=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s{i};
 end;
if last then do;
 do i=1 to 7;
&amp;nbsp;&amp;nbsp; do j=1 to 2;
&amp;nbsp;&amp;nbsp;&amp;nbsp; put x{i,j}=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@;
&amp;nbsp;&amp;nbsp; end;
&amp;nbsp;&amp;nbsp;&amp;nbsp; put / ;
 end;
end;
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;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 May 2013 14:50:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recoding-dataset-using-an-array/m-p/133447#M27109</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2013-05-10T14:50:53Z</dc:date>
    </item>
  </channel>
</rss>

