<?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: transpose data and use data value as variable name in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/390882#M93825</link>
    <description>&lt;P&gt;Post test data in the form of a datastep, this then conveys structure and means we don't have to type that out.&lt;/P&gt;
&lt;P&gt;As such this is untested:&lt;/P&gt;
&lt;PRE&gt;data want (keep=country site rename=(res1=freqf1q1a....)); /* note rename all resN variables to what you have in your output dataset */
  set have;
  array res{8};
  by site;
  retain res:;
  if first.site then call missing(of res:);
  if f_f1q1 = "A" then do;
    res{1}=frequency;
    res{3}=percent;
  end;
  else if f+f1q1="B" then do;
    res{2}=frequency;
    res{4}=percent;
  end;
  else if f_f2q3="F" then do;
    res{5}=frequency;
    res{7}=percent;
  end;
  else do;
    res{6}=frequency;
    res{8}=percent;
  end;
  if last.site then output;
run;&lt;/PRE&gt;</description>
    <pubDate>Fri, 25 Aug 2017 12:16:15 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2017-08-25T12:16:15Z</dc:date>
    <item>
      <title>transpose data and use data value as variable name</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/390879#M93824</link>
      <description>&lt;P&gt;I have a large data set and want to summarise the count and percent of a number of variables by site then output these values into a new data set with a single row per site.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have used the following code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ods output onewayfreqs=work.owf;&lt;BR /&gt;proc freq data=euro1;&lt;BR /&gt;tables f1q1 f2q3;&lt;BR /&gt;by country site;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;ods listing;&lt;/P&gt;&lt;P&gt;proc print data=work.owf;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the output looks like this, with multiple rows per site &amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Country&lt;/TD&gt;&lt;TD&gt;Site&lt;/TD&gt;&lt;TD&gt;Table&lt;/TD&gt;&lt;TD&gt;F_f1q1&lt;/TD&gt;&lt;TD&gt;f1q1&lt;/TD&gt;&lt;TD&gt;Frequency&lt;/TD&gt;&lt;TD&gt;Percent&lt;/TD&gt;&lt;TD&gt;F_f2q3&lt;/TD&gt;&lt;TD&gt;f2q3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;42&lt;/TD&gt;&lt;TD&gt;Table f1q1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;42&lt;/TD&gt;&lt;TD&gt;Table f2q3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;19&lt;/TD&gt;&lt;TD&gt;38&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;42&lt;/TD&gt;&lt;TD&gt;Table f2q3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;31&lt;/TD&gt;&lt;TD&gt;62&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;Table f1q1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;Table f2q3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;22&lt;/TD&gt;&lt;TD&gt;44&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;Table f2q3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;28&lt;/TD&gt;&lt;TD&gt;56&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;Germany&lt;/TD&gt;&lt;TD&gt;75&lt;/TD&gt;&lt;TD&gt;Table f1q1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;Germany&lt;/TD&gt;&lt;TD&gt;75&lt;/TD&gt;&lt;TD&gt;Table f2q3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;22&lt;/TD&gt;&lt;TD&gt;44&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, I would like to re-define the frequency and percent variables to relate to the corresponding variable value and to only have one row per site. i.e. this is what I want the data to look like:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Country&lt;/TD&gt;&lt;TD&gt;Site&lt;/TD&gt;&lt;TD&gt;freqf1q1A&lt;/TD&gt;&lt;TD&gt;freqf1q1B&lt;/TD&gt;&lt;TD&gt;percf1q1A&lt;/TD&gt;&lt;TD&gt;percf1q1B&lt;/TD&gt;&lt;TD&gt;freqf2q3F&lt;/TD&gt;&lt;TD&gt;freqf2q3M&lt;/TD&gt;&lt;TD&gt;percf2q3F&lt;/TD&gt;&lt;TD&gt;percf2q3M&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;42&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;19&lt;/TD&gt;&lt;TD&gt;31&lt;/TD&gt;&lt;TD&gt;38&lt;/TD&gt;&lt;TD&gt;62&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;22&lt;/TD&gt;&lt;TD&gt;28&lt;/TD&gt;&lt;TD&gt;44&lt;/TD&gt;&lt;TD&gt;56&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Germany&lt;/TD&gt;&lt;TD&gt;75&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;22&lt;/TD&gt;&lt;TD&gt;44&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;Any help would be much appreciated thank you!&lt;/P&gt;&lt;P&gt;Catrin&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Aug 2017 11:36:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/390879#M93824</guid>
      <dc:creator>livcat1</dc:creator>
      <dc:date>2017-08-25T11:36:20Z</dc:date>
    </item>
    <item>
      <title>Re: transpose data and use data value as variable name</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/390882#M93825</link>
      <description>&lt;P&gt;Post test data in the form of a datastep, this then conveys structure and means we don't have to type that out.&lt;/P&gt;
&lt;P&gt;As such this is untested:&lt;/P&gt;
&lt;PRE&gt;data want (keep=country site rename=(res1=freqf1q1a....)); /* note rename all resN variables to what you have in your output dataset */
  set have;
  array res{8};
  by site;
  retain res:;
  if first.site then call missing(of res:);
  if f_f1q1 = "A" then do;
    res{1}=frequency;
    res{3}=percent;
  end;
  else if f+f1q1="B" then do;
    res{2}=frequency;
    res{4}=percent;
  end;
  else if f_f2q3="F" then do;
    res{5}=frequency;
    res{7}=percent;
  end;
  else do;
    res{6}=frequency;
    res{8}=percent;
  end;
  if last.site then output;
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 25 Aug 2017 12:16:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/390882#M93825</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-08-25T12:16:15Z</dc:date>
    </item>
    <item>
      <title>Re: transpose data and use data value as variable name</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/391047#M93867</link>
      <description>&lt;P&gt;Here is an example using sashelp.cars:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc freq data=sashelp.cars noprint;
by make type;
tables DriveTrain / out=carsFreq_DT;
tables Cylinders / out=carsFreq_Cyl;
run;

option missing=' ';
data long;
set carsFreq_: indsname=_dsName;
level = scan(_dsName,3,"._");
var = cats("freq", level, DriveTrain, Cylinders);
value = count;
output;
var = cats("perc", level, DriveTrain, Cylinders);
value = percent;
output;
keep make type var value;
format value bestd6.2;
run;

proc sort data=long; by make type var; run;

proc transpose data=long out=report(drop=_name_);
by make type;
id var;
var value;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 26 Aug 2017 03:29:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/391047#M93867</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-08-26T03:29:11Z</dc:date>
    </item>
    <item>
      <title>Re: transpose data and use data value as variable name</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/391392#M93989</link>
      <description>&lt;P&gt;Thanks for your help and time&lt;/P&gt;</description>
      <pubDate>Tue, 29 Aug 2017 06:03:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/391392#M93989</guid>
      <dc:creator>livcat1</dc:creator>
      <dc:date>2017-08-29T06:03:20Z</dc:date>
    </item>
    <item>
      <title>Re: transpose data and use data value as variable name</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/391393#M93990</link>
      <description>Thanks PGStats this works perfectly!</description>
      <pubDate>Tue, 29 Aug 2017 06:04:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-data-and-use-data-value-as-variable-name/m-p/391393#M93990</guid>
      <dc:creator>livcat1</dc:creator>
      <dc:date>2017-08-29T06:04:10Z</dc:date>
    </item>
  </channel>
</rss>

