<?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: calculations vertically in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525201#M142886</link>
    <description>this worked. thank you</description>
    <pubDate>Mon, 07 Jan 2019 19:57:47 GMT</pubDate>
    <dc:creator>kz134</dc:creator>
    <dc:date>2019-01-07T19:57:47Z</dc:date>
    <item>
      <title>calculations vertically</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525186#M142880</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Client&lt;/TD&gt;&lt;TD&gt;Business Stage&lt;/TD&gt;&lt;TD&gt;Date and Time&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20-Dec-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;21-Dec-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;24-Dec-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;05-Jan-19&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;06-Jan-19&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBB&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20-Dec-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBB&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;21-Dec-18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to know how much time each client spent in each of the business stages.&amp;nbsp; I want:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Client&lt;/TD&gt;&lt;TD&gt;Business Stage&lt;/TD&gt;&lt;TD&gt;Time Spent (Days)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAA&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBB`&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The tricky thing is that each client can go back and fourth between stages. As you see here, Client AAA went to stage 1 twice. So client AAA spend 2 days in stage 1.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for helping.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Jan 2019 19:27:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525186#M142880</guid>
      <dc:creator>kz134</dc:creator>
      <dc:date>2019-01-07T19:27:11Z</dc:date>
    </item>
    <item>
      <title>Re: calculations vertically</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525188#M142882</link>
      <description>&lt;P&gt;UNTESTED CODE (and assumes everything is sorted by client and date, and the dates are actual SAS date values)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data re_arrange;
    merge have have(firstobs=2 rename=(client=client2 date=date2) drop=stage);
    elapsed=date2-date1;
    if client2^=client then delete;
run;
proc summary data=re_arrange;
    class client stage;
    var elapsed;
    output out=want sum=sum_elapsed;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 07 Jan 2019 19:39:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525188#M142882</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-01-07T19:39:04Z</dc:date>
    </item>
    <item>
      <title>Re: calculations vertically</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525201#M142886</link>
      <description>this worked. thank you</description>
      <pubDate>Mon, 07 Jan 2019 19:57:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525201#M142886</guid>
      <dc:creator>kz134</dc:creator>
      <dc:date>2019-01-07T19:57:47Z</dc:date>
    </item>
    <item>
      <title>Re: calculations vertically</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525206#M142888</link>
      <description>&lt;P&gt;A hash object approach&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Client $ Business_Stage Date:date9.;
format Date date9.;
datalines;
AAA 1 20-Dec-18
AAA 2 21-Dec-18
AAA 3 24-Dec-18
AAA 1 05-Jan-19
AAA 3 06-Jan-19
BBB 1 20-Dec-18
BBB 2 21-Dec-18
;

data _null_;
   if _N_ = 1 then do;
      declare hash h(ordered:'A');
      h.defineKey('Client', 'Business_Stage');
      h.defineData('Client', 'Business_Stage', 'time_spent');
      h.defineDone();
   end;

   merge have have(firstobs=2 rename=(client=client2 date=date2) drop=Business_Stage) end=lr;
   if client2 ne client then time_spent=0;
   else time_spent=intck('day', date, date2);

   if h.check() ne 0 then h.add();
   else do;
      _time_spent=time_spent;
      rc=h.find();
      time_spent=time_spent+_time_spent;
      h.replace();
   end;

   if lr then h.output(dataset:'want(where=(time_spent ne 0))');
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 07 Jan 2019 20:22:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculations-vertically/m-p/525206#M142888</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-01-07T20:22:09Z</dc:date>
    </item>
  </channel>
</rss>

