<?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: Long to wide Array in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158607#M30993</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I will need it in heat map type of report eventually (if that possible in sas)&amp;nbsp; but my knowledge of sas has not made it there yet.&amp;nbsp; Thanks to all the help here I just managed to get the following code to produce the output I am looking for minus any formatting.&amp;nbsp; Any suggested improvements to this code or a report output would be welcome.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data temp_YTD_Cost_V(drop=_utype costv trans_cost ytdaco usage_type);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array ytdcv{5} $ US OH AA RM Total;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until (last.apg1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set temp_YTD_Cost_V;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by customer gd apg1;&lt;/P&gt;&lt;P&gt;&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 usage_type='US' then _utype=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 usage_type='OH' then _utype=2;&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 usage_type='AA' then _utype=3;&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 usage_type='RM' then _utype=4;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv{_utype}=costV;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv{5}=sum(ytdcv{1},ytdcv{2},ytdcv{3},ytdcv{4});&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 14 May 2014 16:14:40 GMT</pubDate>
    <dc:creator>dsbihill</dc:creator>
    <dc:date>2014-05-14T16:14:40Z</dc:date>
    <item>
      <title>Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158600#M30986</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I am having some trouble with the following array data step.&amp;nbsp; With my limited understanding of Arrays and SAS programing I thought that i could use an arrays variable name to locate data into the array.&amp;nbsp; I cant seem to google anything that explains this very well.&amp;nbsp; In this data step I am trying to use the Usage_type that is equal to the array variable names to change the data from long to wide.&amp;nbsp; I get an error in the log for "Invalid numeric data, usage_type='AA'.&amp;nbsp; Do i have to call out the usage type as a character some how?&amp;nbsp;&amp;nbsp; I know i could use proc transpose but i really need to start using arrays more.&amp;nbsp; Can anyone tell me why this doesn't work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you so much.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Data temp_ytd_cost_v;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array ytdcv{4} US OH AA RM;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until (last.apg1);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set temp_ytd_cost_v;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by customer gd apg1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv{usage_type}=costV&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data type: usage_type = char, same as variable names of the array&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 14:22:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158600#M30986</guid>
      <dc:creator>dsbihill</dc:creator>
      <dc:date>2014-05-14T14:22:07Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158601#M30987</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Try the following modification.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Data temp_ytd_cost_v;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array ytdcv{4} $ ( "US" "OH" "AA" "RM");&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until (last.apg1);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set temp_ytd_cost_v;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by customer gd apg1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv{usage_type}=costV&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Run;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 14:30:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158601#M30987</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-05-14T14:30:13Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158602#M30988</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your logic doesn't seem to make sense.&amp;nbsp; The do loop is using last.apg1 as its condition, now last. is a per observation flag, the do loop is operating within an observation.&amp;nbsp; Secondly why is the set statement within the do loop?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please post some test data and how you would like it to look so I can se what you are trying to achieve.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 14:30:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158602#M30988</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-05-14T14:30:38Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158603#M30989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It doesn't work because an array index, the part between the {}, can't be a character. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to figure out a way to convert usage_type into a number that corresponds to variable location in the array.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does USAGE_TYPE have the same value as the array element variable names you show US OH AA RM?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 14:33:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158603#M30989</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-05-14T14:33:02Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158604#M30990</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In response to RW9's question&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data table in is listed below.&amp;nbsp; The set statement causes me to iterate to a new observation every time it is read.&amp;nbsp; This allows me to move through the records and populate the array without writing anything to my new record set until i am ready.&amp;nbsp; Once i hit the last.apg1 i exit the loop and write the observation to my new record set&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Data In&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="67"&gt;Customer&lt;/TD&gt;&lt;TD width="22"&gt;gd&lt;/TD&gt;&lt;TD width="40"&gt;APG1&lt;/TD&gt;&lt;TD width="78"&gt;usage_type&lt;/TD&gt;&lt;TD width="51"&gt;CostV&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$600&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;RM&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$300&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$5,000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;OH&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$2,000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;RM&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$1,200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$400&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;RM&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$50&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD align="right" class="xl63"&gt;$60&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Data out needed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 352px;"&gt;&lt;TBODY&gt;&lt;TR style="height: 15.0pt;"&gt;&lt;TD height="20" style="height: 15.0pt; width: 50pt;" width="67"&gt;Customer&lt;/TD&gt;&lt;TD style="width: 19pt;" width="25"&gt;GD&lt;/TD&gt;&lt;TD style="width: 30pt;" width="40"&gt;APG1&lt;/TD&gt;&lt;TD style="width: 59pt;" width="78"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&lt;/TD&gt;&lt;TD style="width: 38pt;" width="51"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OH &lt;/TD&gt;&lt;TD style="width: 38pt;" width="51"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RM&lt;/TD&gt;&lt;TD style="width: 30pt;" width="40"&gt;&amp;nbsp;&amp;nbsp; US&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 15.0pt;"&gt;&lt;TD height="20" style="height: 15.0pt;"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; A&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$600&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$200&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$300&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 15.0pt;"&gt;&lt;TD height="20" style="height: 15.0pt;"&gt;Z&lt;/TD&gt;&lt;TD&gt;X &lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; B&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$5,000&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$2,000&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$1,200&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$400&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 15.0pt;"&gt;&lt;TD height="20" style="height: 15.0pt;"&gt;Z&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; C&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$30&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$50&lt;/TD&gt;&lt;TD align="right" class="xl65"&gt;$60&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 14:57:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158604#M30990</guid>
      <dc:creator>dsbihill</dc:creator>
      <dc:date>2014-05-14T14:57:20Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158605#M30991</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;TBH, I don't think I would use array processing for this.&amp;nbsp; I realize you want to learn arrays and all, but this really is why there is a function transpose.&amp;nbsp; There are also other methods to get to what you want:&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt; merge&amp;nbsp; have (keep=customer ge apg1 rename=(costv=aa) where=(usage_type="AA"))&lt;BR /&gt;&amp;nbsp; have (keep=customer ge apg1 rename=(costv=oh) where=(usage_type="OH"))&lt;BR /&gt;&amp;nbsp; have (keep=customer ge apg1 rename=(costv=rm) where=(usage_type="RM"))&lt;BR /&gt;&amp;nbsp; have (keep=customer ge apg1 rename=(costv=us) where=(usage_type="US"));&lt;BR /&gt; by customer ge apg1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt; attrib aa oh rm us format=best.;&lt;BR /&gt; set have;&lt;BR /&gt; by apg1;&lt;BR /&gt; if usage_type="AA" then aa=costv;&lt;BR /&gt; if usage_type="OH" then OH=costv;&lt;BR /&gt; if usage_type="RM" then RM=costv;&lt;BR /&gt; if usage_type="US" then US=costv;&lt;BR /&gt; if last.apg1 then output;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc transpose data=have out=want;&lt;BR /&gt; by customer ge apg1;&lt;BR /&gt; var costv;&lt;BR /&gt; id usage_type;&lt;BR /&gt; idlabel usage_type;&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 15:16:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158605#M30991</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-05-14T15:16:54Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158606#M30992</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do you need a dataset or a report with that layout?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 16:05:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158606#M30992</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2014-05-14T16:05:06Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158607#M30993</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I will need it in heat map type of report eventually (if that possible in sas)&amp;nbsp; but my knowledge of sas has not made it there yet.&amp;nbsp; Thanks to all the help here I just managed to get the following code to produce the output I am looking for minus any formatting.&amp;nbsp; Any suggested improvements to this code or a report output would be welcome.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data temp_YTD_Cost_V(drop=_utype costv trans_cost ytdaco usage_type);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array ytdcv{5} $ US OH AA RM Total;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until (last.apg1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set temp_YTD_Cost_V;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by customer gd apg1;&lt;/P&gt;&lt;P&gt;&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 usage_type='US' then _utype=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 usage_type='OH' then _utype=2;&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 usage_type='AA' then _utype=3;&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 usage_type='RM' then _utype=4;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv{_utype}=costV;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv{5}=sum(ytdcv{1},ytdcv{2},ytdcv{3},ytdcv{4});&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 16:14:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158607#M30993</guid>
      <dc:creator>dsbihill</dc:creator>
      <dc:date>2014-05-14T16:14:40Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158608#M30994</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;dsbihill,&lt;/P&gt;&lt;P&gt;Thank you for posting your code.&amp;nbsp; I have not witnessed your approach before.&amp;nbsp; I would recommend defaulting the array member values to zero.&amp;nbsp; Some SAS functions fail when adding missing values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* I did not test this&amp;nbsp; but I have seen this style */&lt;/P&gt;&lt;P&gt; array ytdcv{5} $ US OH AA RM Total 5*0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* I have also seen this style */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if first.apg1 then do;&lt;/P&gt;&lt;P&gt;do z=1 to 5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ytdcv(z) = 0;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 16:47:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158608#M30994</guid>
      <dc:creator>jwillis</dc:creator>
      <dc:date>2014-05-14T16:47:02Z</dc:date>
    </item>
    <item>
      <title>Re: Long to wide Array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158609#M30995</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Heat map examples:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/kb/35/156.html"&gt;http://support.sas.com/kb/35/156.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/kb/31/489.html"&gt;http://support.sas.com/kb/31/489.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://blogs.sas.com/content/iml/2013/12/11/visualize-a-matrix-in-sas-by-using-a-discrete-heat-map/"&gt;http://blogs.sas.com/content/iml/2013/12/11/visualize-a-matrix-in-sas-by-using-a-discrete-heat-map/&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 17:08:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Long-to-wide-Array/m-p/158609#M30995</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2014-05-14T17:08:38Z</dc:date>
    </item>
  </channel>
</rss>

