<?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 sum the specific values with previous observation values when numbers less than three? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585786#M75808</link>
    <description>&lt;P&gt;And a traditional method&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
infile cards truncover;
input Date :yymmdd10.	Numbers	;
format date yymmdd10.;
cards;
20100101	233	233
20100102	271	271
20100103	350	350
20100104	738	745
20100105	2	　
20100106	1	　
20100107	2	　
20100108	1	　
20100109	1	　
20100110	413	413
20100111	710	710
20100113	575	575
20100114	543	545
20100115	2	 
20100116	296	296
20100117	369	369
20100118	735	735
20100119	616	616
20100120	571	571
20100122	458	460
20100123	1	 
20100124	1	 
20100125	664	664
20100126	575	575
20100127	574	574
20100129	415	415
20100130	269	269
20100131	360	362
20100201	2	 
;

data temp;
set have;
if numbers&amp;gt;=3 then grp+1;
run;

proc sql;
create table want(drop=grp) as
select *, ifn(numbers&amp;gt;=3,sum(numbers),.) as new_numbers
from temp
group by grp
order by date;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 03 Sep 2019 12:00:55 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2019-09-03T12:00:55Z</dc:date>
    <item>
      <title>How to sum the specific values with previous observation values when numbers less than three?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585757#M75805</link>
      <description>&lt;P&gt;Dear all&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to check the numbers for each date.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The values need to be coded as missing when the numbers less than 3.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then, the values needs to sum up with the previous values that shown as "New_Numbers".&lt;/P&gt;&lt;P&gt;(ex: 745=738+2+1+2+1+1)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The raw data are as follows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Numbers&lt;/TD&gt;&lt;TD&gt;New_Numbers&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100101&lt;/TD&gt;&lt;TD&gt;233&lt;/TD&gt;&lt;TD&gt;233&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100102&lt;/TD&gt;&lt;TD&gt;271&lt;/TD&gt;&lt;TD&gt;271&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100103&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100104&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;738&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;745&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100105&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100106&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100107&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100108&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100109&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF0000"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100110&lt;/TD&gt;&lt;TD&gt;413&lt;/TD&gt;&lt;TD&gt;413&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100111&lt;/TD&gt;&lt;TD&gt;710&lt;/TD&gt;&lt;TD&gt;710&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100113&lt;/TD&gt;&lt;TD&gt;575&lt;/TD&gt;&lt;TD&gt;575&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100114&lt;/TD&gt;&lt;TD&gt;543&lt;/TD&gt;&lt;TD&gt;545&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100115&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100116&lt;/TD&gt;&lt;TD&gt;296&lt;/TD&gt;&lt;TD&gt;296&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100117&lt;/TD&gt;&lt;TD&gt;369&lt;/TD&gt;&lt;TD&gt;369&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100118&lt;/TD&gt;&lt;TD&gt;735&lt;/TD&gt;&lt;TD&gt;735&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100119&lt;/TD&gt;&lt;TD&gt;616&lt;/TD&gt;&lt;TD&gt;616&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100120&lt;/TD&gt;&lt;TD&gt;571&lt;/TD&gt;&lt;TD&gt;571&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100122&lt;/TD&gt;&lt;TD&gt;458&lt;/TD&gt;&lt;TD&gt;460&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100123&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100124&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100125&lt;/TD&gt;&lt;TD&gt;664&lt;/TD&gt;&lt;TD&gt;664&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100126&lt;/TD&gt;&lt;TD&gt;575&lt;/TD&gt;&lt;TD&gt;575&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100127&lt;/TD&gt;&lt;TD&gt;574&lt;/TD&gt;&lt;TD&gt;574&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100129&lt;/TD&gt;&lt;TD&gt;415&lt;/TD&gt;&lt;TD&gt;415&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100130&lt;/TD&gt;&lt;TD&gt;269&lt;/TD&gt;&lt;TD&gt;269&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100131&lt;/TD&gt;&lt;TD&gt;360&lt;/TD&gt;&lt;TD&gt;362&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20100201&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 03 Sep 2019 11:03:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585757#M75805</guid>
      <dc:creator>elvics</dc:creator>
      <dc:date>2019-09-03T11:03:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to sum the specific values with previous observation values when numbers less than three?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585778#M75806</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/111259"&gt;@elvics&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
infile cards truncover;
input Date :yymmdd10.	Numbers	;
format date yymmdd10.;
cards;
20100101	233	233
20100102	271	271
20100103	350	350
20100104	738	745
20100105	2	　
20100106	1	　
20100107	2	　
20100108	1	　
20100109	1	　
20100110	413	413
20100111	710	710
20100113	575	575
20100114	543	545
20100115	2	 
20100116	296	296
20100117	369	369
20100118	735	735
20100119	616	616
20100120	571	571
20100122	458	460
20100123	1	 
20100124	1	 
20100125	664	664
20100126	575	575
20100127	574	574
20100129	415	415
20100130	269	269
20100131	360	362
20100201	2	 
;

data want ;
if _n_=1 then do;
 if 0 then set have(rename=(numbers=n));
   dcl hash H (dataset:'have(rename=(numbers=n))') ;
   h.definekey  ("date") ;
   h.definedata ("n") ;
   h.definedone () ;
end;
set have;
if numbers&amp;gt;=3 then do;
do d=date+1 by 1 while(h.find(key:d)= 0);
 if n&amp;gt;=3  then leave;
 new_numbers=sum(new_numbers,n);
end;
new_numbers=sum(new_numbers,numbers);
end;
drop n d;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 03 Sep 2019 11:39:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585778#M75806</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-09-03T11:39:36Z</dc:date>
    </item>
    <item>
      <title>Re: How to sum the specific values with previous observation values when numbers less than three?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585780#M75807</link>
      <description>&lt;P&gt;Sort in reverse order.&lt;/P&gt;
&lt;P&gt;Then, in a data step, retain a sum variable.&lt;/P&gt;
&lt;P&gt;Set to zero at the beginning.&lt;/P&gt;
&lt;P&gt;When numbers is le 3, sum the values up in your retained variable;&lt;/P&gt;
&lt;P&gt;When numbers is gt 3, then:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;add retained variable to numbers to give new_numbers&lt;/LI&gt;
&lt;LI&gt;output&lt;/LI&gt;
&lt;LI&gt;set retained variable to zero&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Sort back to original order.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For code (especially tested code) supply example data in usable form (data step with datalines for easy copy/paste to program window)&lt;/P&gt;</description>
      <pubDate>Tue, 03 Sep 2019 11:43:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585780#M75807</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-09-03T11:43:00Z</dc:date>
    </item>
    <item>
      <title>Re: How to sum the specific values with previous observation values when numbers less than three?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585786#M75808</link>
      <description>&lt;P&gt;And a traditional method&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
infile cards truncover;
input Date :yymmdd10.	Numbers	;
format date yymmdd10.;
cards;
20100101	233	233
20100102	271	271
20100103	350	350
20100104	738	745
20100105	2	　
20100106	1	　
20100107	2	　
20100108	1	　
20100109	1	　
20100110	413	413
20100111	710	710
20100113	575	575
20100114	543	545
20100115	2	 
20100116	296	296
20100117	369	369
20100118	735	735
20100119	616	616
20100120	571	571
20100122	458	460
20100123	1	 
20100124	1	 
20100125	664	664
20100126	575	575
20100127	574	574
20100129	415	415
20100130	269	269
20100131	360	362
20100201	2	 
;

data temp;
set have;
if numbers&amp;gt;=3 then grp+1;
run;

proc sql;
create table want(drop=grp) as
select *, ifn(numbers&amp;gt;=3,sum(numbers),.) as new_numbers
from temp
group by grp
order by date;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 03 Sep 2019 12:00:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585786#M75808</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-09-03T12:00:55Z</dc:date>
    </item>
    <item>
      <title>Re: How to sum the specific values with previous observation values when numbers less than three?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585794#M75810</link>
      <description>&lt;P&gt;Alternatively, please try&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have ;
by descending date;
run;

data want;
set have;
by descending date;
if .&amp;lt;Numbers&amp;lt;=3 then grp=1;
else grp=2;
run;

data want2;
set want;
by grp notsorted;
if first.grp then sum=.;
if grp=1 then sum+numbers;
numbers2=coalesce(numbers+lag(sum),numbers);
if grp=1 then numbers2=.;
drop grp sum;
run;

proc sort data=want2 ;
by date;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 03 Sep 2019 12:42:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-to-sum-the-specific-values-with-previous-observation-values/m-p/585794#M75810</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-09-03T12:42:32Z</dc:date>
    </item>
  </channel>
</rss>

