<?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: How to transpose a sas data set using do loop. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121986#M24984</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Art:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't know that it is really a lot less typing to apply the do loop, as long as there is a way to avoid typing the list of varible names.&amp;nbsp; One way is the sql way you suggest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another is to use Tom's solution, but instead of listing the variables, use the keywords _numeric_ and _character_&amp;nbsp; as in;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want (keep=name value);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have; &lt;BR /&gt;&amp;nbsp; array nam {*} $32 _character_; &lt;BR /&gt;&amp;nbsp; array val{*}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _numeric_ ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do I=1 to dim(nam);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name=nam{I};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=val{I};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&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;For folks unfamiliar with the "select ... into"&amp;nbsp; and dictionary.xxx techniques, the array approach is probably more intuitive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BUT the downside ... while this technique free of requiring a naming converntion for the variable names&amp;nbsp; (i.e. you don't need varnames of xxx and xxx_value) , it absolutely depends on the order of the "name" vars to correspond with the order of the numeric value variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 27 Aug 2013 12:59:35 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2013-08-27T12:59:35Z</dc:date>
    <item>
      <title>How to transpose a sas data set using do loop.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121983#M24981</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Does anyone know how I could achieve this. &lt;/P&gt;&lt;P&gt;I have a SAS data with 495 variable and I observation. I want to transpose the variable and create 495 observation. I don’t know how to do this in do loop. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is an example&lt;/P&gt;&lt;P&gt;SAS data set&lt;/P&gt;&lt;P&gt;Var1 var1_value&amp;nbsp; var2 var2_value&amp;nbsp; var3 var3_value&amp;nbsp; var4 var4_value&lt;/P&gt;&lt;P&gt;subj&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; owner&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop&amp;nbsp; 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; doc&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want this &lt;/P&gt;&lt;P&gt;Variable value&lt;/P&gt;&lt;P&gt;Subj&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; &lt;/P&gt;&lt;P&gt;Owner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;Prop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;doc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Aug 2013 16:08:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121983#M24981</guid>
      <dc:creator>zqkal</dc:creator>
      <dc:date>2013-08-26T16:08:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose a sas data set using do loop.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121984#M24982</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use two arrays.&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; array name var1 var2 ...... ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array number var1_value var2_value .... ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i =1 to dim(name);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; variable = name(i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = number(i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; keep variable value ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF all of the character variables have the names and all of the numeric variables have the values AND your variables are defined in a logic order you might be able to avoid listing all of the names.&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; array name _character_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array number _numeric_ ;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Aug 2013 16:56:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121984#M24982</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-08-26T16:56:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose a sas data set using do loop.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121985#M24983</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do you really need to do it using a do loop?&amp;nbsp; It would call for a lot less typing if you created and used a macro variable.&amp;nbsp; e.g.:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select "variable="||strip(name)||"; value="||strip(name)||"_value;output;"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; into :varnames separated by " "&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from dictionary.columns&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where libname="WORK" and&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; memname="HAVE" and&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; name not contains "_value"&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;data want ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;amp;varnames.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; keep variable value ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Aug 2013 19:49:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121985#M24983</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2013-08-26T19:49:07Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose a sas data set using do loop.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121986#M24984</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Art:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't know that it is really a lot less typing to apply the do loop, as long as there is a way to avoid typing the list of varible names.&amp;nbsp; One way is the sql way you suggest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another is to use Tom's solution, but instead of listing the variables, use the keywords _numeric_ and _character_&amp;nbsp; as in;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want (keep=name value);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have; &lt;BR /&gt;&amp;nbsp; array nam {*} $32 _character_; &lt;BR /&gt;&amp;nbsp; array val{*}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _numeric_ ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do I=1 to dim(nam);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name=nam{I};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=val{I};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&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;For folks unfamiliar with the "select ... into"&amp;nbsp; and dictionary.xxx techniques, the array approach is probably more intuitive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BUT the downside ... while this technique free of requiring a naming converntion for the variable names&amp;nbsp; (i.e. you don't need varnames of xxx and xxx_value) , it absolutely depends on the order of the "name" vars to correspond with the order of the numeric value variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Aug 2013 12:59:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121986#M24984</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2013-08-27T12:59:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose a sas data set using do loop.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121987#M24985</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks everyone &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Sep 2013 22:16:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121987#M24985</guid>
      <dc:creator>zqkal</dc:creator>
      <dc:date>2013-09-03T22:16:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose a sas data set using do loop.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121988#M24986</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Just curious, how come your raw data ends up with an odd number of obs(495)? Does it mean your data does not have a complete pairwise match? The following method is based on the assumption that your data strictly follows Variable-Value order and no skipping, it uses DOW, while Mod() will do the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=have out=have1;&lt;/P&gt;&lt;P&gt;var _all_;&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;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do _n_=1 to 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _n_=1 then variable=col1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else value=input(col1,best.);&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; keep variable value;&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Sep 2013 23:29:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-a-sas-data-set-using-do-loop/m-p/121988#M24986</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-09-03T23:29:55Z</dc:date>
    </item>
  </channel>
</rss>

