<?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: Processing of a dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678086#M204623</link>
    <description>&lt;P&gt;thank you for the proposals regarding proc transpose;&lt;/P&gt;&lt;P&gt;unfortunately it works perfectly only with small datasets; as soon as i try it with larger datasets (&amp;gt;10 million rows) I get the following error:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="VCucu_0-1597929737635.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/48462i351AF38E9BBC1B27/image-size/medium?v=v2&amp;amp;px=400" role="button" title="VCucu_0-1597929737635.png" alt="VCucu_0-1597929737635.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;is there any way to do this ?&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 20 Aug 2020 13:23:53 GMT</pubDate>
    <dc:creator>VCucu</dc:creator>
    <dc:date>2020-08-20T13:23:53Z</dc:date>
    <item>
      <title>Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678047#M204610</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have an existing SAS dataset with the following structure:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Tenant&lt;/TD&gt;&lt;TD&gt;Generation&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;Var3&lt;/TD&gt;&lt;TD&gt;…&lt;/TD&gt;&lt;TD&gt;VarZ&lt;/TD&gt;&lt;TD&gt;Metric_Value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;Z&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202006&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;etc.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to process it as efficiently as possible (time-wise) to this summarized structure:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Tenant&lt;/TD&gt;&lt;TD&gt;Generation&lt;/TD&gt;&lt;TD&gt;Variable&lt;/TD&gt;&lt;TD&gt;Variable Value&lt;/TD&gt;&lt;TD&gt;sum(Metric_Value)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;Z&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I currently do this by going for each variable through the whole dataset separately (takes a lot of time as there are many variables) :(.&lt;STRONG&gt; Is there a possibility to create the above resulting table only by going once through the dataset ?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much,&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 11:03:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678047#M204610</guid>
      <dc:creator>VCucu</dc:creator>
      <dc:date>2020-08-20T11:03:57Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678048#M204611</link>
      <description>&lt;P&gt;What do you want the sum of Metric_Value to represent? Insert the proper values in the desired output.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 11:14:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678048#M204611</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-08-20T11:14:05Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678049#M204612</link>
      <description>&lt;P&gt;Hi draycut,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;for example&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;INPUT&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;Tenant&lt;/TD&gt;&lt;TD&gt;Generation&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;Var3&lt;/TD&gt;&lt;TD&gt;…&lt;/TD&gt;&lt;TD&gt;VarZ&lt;/TD&gt;&lt;TD&gt;Metric_Value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;Z&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202006&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;etc.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;OUTPUT&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;Tenant&lt;/TD&gt;&lt;TD&gt;Generation&lt;/TD&gt;&lt;TD&gt;Variable&lt;/TD&gt;&lt;TD&gt;Variable Value&lt;/TD&gt;&lt;TD&gt;sum(Metric_Value)&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;250&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var1&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;X&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;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;196&lt;/TD&gt;&lt;TD&gt;202007&lt;/TD&gt;&lt;TD&gt;Var2&lt;/TD&gt;&lt;TD&gt;Z&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;196&lt;/TD&gt;&lt;TD&gt;202006&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;etc&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;</description>
      <pubDate>Thu, 20 Aug 2020 11:19:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678049#M204612</guid>
      <dc:creator>VCucu</dc:creator>
      <dc:date>2020-08-20T11:19:18Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678052#M204614</link>
      <description>the var1,var2 ... varz are around 30 and are known beforehand.&lt;BR /&gt;&lt;BR /&gt;However the values that each variable (var1,var2,varz) can take for each tenant and/or generation differ and should be read on the fly from the dataset.</description>
      <pubDate>Thu, 20 Aug 2020 11:37:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678052#M204614</guid>
      <dc:creator>VCucu</dc:creator>
      <dc:date>2020-08-20T11:37:34Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678055#M204615</link>
      <description>&lt;P&gt;You can transpose the data and the original var names and values will become available as categorical variables for use in Proc MEANS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your sample data does not have any replication within final categories, so a simple transpose might be all you need.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sample data generator that has replicates and thus SUM is a useful aggregate.&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;data have;
  call streaminit(123);
  do id = 1 to 10;
    do id2 = 202001 to 202012;
      do seq = 1 to rand('integer',15);
        length var1-var100 $1;
        array vars var1-var100;
        do over vars;
          vars = collate(64+rand('integer',10),,1);
        end;
        metric = rand('integer',100,500); 
        output;
      end;
    end;
  end;
run;
&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;Code:&lt;/P&gt;
&lt;P&gt;Transposing view and 'all-at-once' processing with MEANS&lt;/P&gt;
&lt;PRE&gt;data have_transpose / view=have_transpose;
  set have;
  array vars var1-var100;
  do index = 1 to dim(vars);&lt;BR /&gt;    length name $32;
    name = vname(vars(index));
    value = vars(index);
    output;
  end;

  keep id id2 index name value metric;
run;

proc means noprint data=have_transpose nway;
  class id id2 index name value;
  var metric;
  output out=want sum=/autoname;
run;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RichardADeVenezia_0-1597923634823.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/48460i62583E63FD10A18D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="RichardADeVenezia_0-1597923634823.png" alt="RichardADeVenezia_0-1597923634823.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 12:21:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678055#M204615</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-08-20T12:21:52Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678056#M204616</link>
      <description>&lt;P&gt;As usual, a long dataset layout makes this a breeze:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Tenant $ Generation $ Var1 $ Var2 $ Metric_Value;
datalines;
196 202007  A X       100
196 202007  B Y       50
196 202007  A Y       100
196 202007  B Y       200
196 202007  C Z       300
;

proc transpose
  data=have
  out=long (
    rename=(_name_=variable col1=variable_value)
  )
;
by tenant generation metric_value notsorted;
var var:;
run;

proc summary data=long nway;
class tenant generation variable variable_value;
var metric_value;
output
  out=want (
    drop=_freq_ _type_
  )
  sum()=
;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Aug 2020 11:42:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678056#M204616</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-08-20T11:42:19Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678086#M204623</link>
      <description>&lt;P&gt;thank you for the proposals regarding proc transpose;&lt;/P&gt;&lt;P&gt;unfortunately it works perfectly only with small datasets; as soon as i try it with larger datasets (&amp;gt;10 million rows) I get the following error:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="VCucu_0-1597929737635.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/48462i351AF38E9BBC1B27/image-size/medium?v=v2&amp;amp;px=400" role="button" title="VCucu_0-1597929737635.png" alt="VCucu_0-1597929737635.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;is there any way to do this ?&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 13:23:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678086#M204623</guid>
      <dc:creator>VCucu</dc:creator>
      <dc:date>2020-08-20T13:23:53Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678089#M204624</link>
      <description>&lt;P&gt;thank you for the proposals regarding proc transpose;&lt;/P&gt;&lt;P&gt;unfortunately it works perfectly only with small datasets; as soon as i try it with larger datasets (&amp;gt;10 million rows) I get the following error:&lt;/P&gt;&lt;DIV class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;is there any way to do this ?&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 13:26:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678089#M204624</guid>
      <dc:creator>VCucu</dc:creator>
      <dc:date>2020-08-20T13:26:37Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678106#M204630</link>
      <description>&lt;P&gt;Please share some information with us about the dataset metadata:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;tenant and generation: type, length&lt;/LI&gt;
&lt;LI&gt;varX: length&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;I ran this for a test on my University Edition:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data myfold.have;
length tenant generation 8;
array vars {30} $;
do tenant = 1 to 50000;
  do generation = 1 to 10;
    do i = 1 to 30;
      vars{i} = byte(rand('integer',65,90));
    end;
    metric_value = rand('uniform',1,1000);
    output;
  end;
end;
run;

proc transpose
  data=myfold.have
  out=myfold.long (
    rename=(_name_=variable col1=variable_value)
  )
;
by tenant generation metric_value notsorted;
var var:;
run;

proc sort data=myfold.long;
by tenant generation variable variable_value;
run;

proc summary data=myfold.long nway;
by tenant generation variable variable_value;
var metric_value;
output
  out=myfold.want (
    drop=_freq_ _type_
  )
  sum()=
;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;So the have dataset has 500.000 observations.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 14:00:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678106#M204630</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-08-20T14:00:16Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678125#M204642</link>
      <description>&lt;P&gt;PS how many different values do you have in your varX variables?&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 14:40:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678125#M204642</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-08-20T14:40:54Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678128#M204644</link>
      <description>&lt;P&gt;And once you have all the information together, do a quick calculation about the probable size of your wanted output. It might be that your SAS installation cannot handle such a dataset.&lt;/P&gt;
&lt;P&gt;In my tests, the "long" and "want" datasets had approximately equal size.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2020 14:45:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678128#M204644</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-08-20T14:45:08Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678185#M204666</link>
      <description>&lt;P&gt;If your system has constrained resources you can use a hash to maintain a 'group-wise pivot summary' that is output upon completion of a DOW loop over the group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data want2;
  if 0 then set have;  * prep pdv (column order and types);

  if _n_ = 1 then do;
    length index 8 name value $32 metric_sum 8.;
    declare hash smy(ordered:'a');
    smy.defineKey ('index', 'name', 'value');
    smy.defineData('index', 'name', 'value', 'metric_sum');  * track pivoted categoricals and aggregate;
    smy.defineDone();
    call missing(name, value, metric_sum);

    declare hiter hi('smy');
  end;

  do until (last.id2);               * DOW loop;
    set have;
    by id id2 notsorted;             * process groups contiguous wise;

    array vars var1-var100;

    do index=1 to dim(vars);
      name = vname(vars(index));                /* pivot categoricals */
      value = vars(index);

      if smy.find() = 0                         /* compute aggregate */
        then metric_sum + metric;
        else metric_sum = metric;

      smy.replace();
    end;
  end;

  do while(hi.next() = 0);
    output;                                    /* output each pivot item within group */
  end;

  smy.clear();                                 /* reset pivot aggregate tracking */

  keep id id2 index name value metric_sum;
run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Aug 2020 17:22:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678185#M204666</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-08-20T17:22:40Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678401#M204736</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;issues solved. original code provided works also for larger datasets.&lt;BR /&gt;could i ask you two follow-up questions pls:&lt;BR /&gt;1) how can i modify your above program so that it takes also NULL/BLANK value into account in the want dataset ? (it is the case that some variables have blanks i.e. instead of var1 taking the values A,B,C there might be some blanks which i would like to get under the name variable value "NULL" that is to have in the end "A","B","C" and "NULL")&lt;BR /&gt;2) in the dataset i have also a long name for variables values ; can i somehow move this as well to the want dataset ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;example below:&lt;/P&gt;&lt;P&gt;have:&lt;BR /&gt;tenant generation var1 var1longname var2 var2longname metric_value&lt;BR /&gt;196 202007 A AAA X XXX 100&lt;BR /&gt;196 202007 B BBB Y YYY 50&lt;BR /&gt;196 202007 A BBB Y YYY 100&lt;BR /&gt;196 202007 B BBB Y YYY 200&lt;BR /&gt;196 202007 C CCC Z ZZZ 300&lt;/P&gt;&lt;P&gt;want:&lt;BR /&gt;Tenant Generation variable variable_value variable_value_longname Metric_Value&lt;BR /&gt;196 202007 Var1 A AAA 200&lt;BR /&gt;196 202007 Var1 B BBB 250&lt;BR /&gt;196 202007 Var1 C CCC 300&lt;BR /&gt;196 202007 Var2 X XXX 100&lt;BR /&gt;196 202007 Var2 Y YYY 350&lt;BR /&gt;196 202007 Var2 Z ZZZ 300&lt;/P&gt;</description>
      <pubDate>Fri, 21 Aug 2020 10:08:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/678401#M204736</guid>
      <dc:creator>VCucu</dc:creator>
      <dc:date>2020-08-21T10:08:42Z</dc:date>
    </item>
    <item>
      <title>Re: Processing of a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/679094#M205056</link>
      <description>&lt;P&gt;Please provide data in self-contained data steps, like we do, that actually create the missing values.&lt;/P&gt;</description>
      <pubDate>Tue, 25 Aug 2020 07:40:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Processing-of-a-dataset/m-p/679094#M205056</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-08-25T07:40:40Z</dc:date>
    </item>
  </channel>
</rss>

