<?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: Repeat a value by group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725046#M225153</link>
    <description>Thank you! This is exactly what I wanted.</description>
    <pubDate>Wed, 10 Mar 2021 03:48:58 GMT</pubDate>
    <dc:creator>AmirSari</dc:creator>
    <dc:date>2021-03-10T03:48:58Z</dc:date>
    <item>
      <title>Repeat a value by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725041#M225150</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I would like to have a value repeated until the next line is zero and if the next line is greater than zero then value be added to the previous value . here is a sample of my dataset and my desired output.&lt;/P&gt;&lt;P&gt;My data looks like this&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;date&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;gwil&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2014&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;20&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2020&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2021&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;80&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;15&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My desired output will look like this&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;date&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;gwill&lt;/TD&gt;&lt;TD&gt;gwill1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2014&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;20&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;120&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2020&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;120&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2021&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;120&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;80&lt;/TD&gt;&lt;TD&gt;80&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;80&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;80&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;15&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;95&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;95&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used the following code and was able to repeat until the next value is zero but can't figure out how to add the next value for the rest of the obseravations.&lt;/P&gt;&lt;PRE&gt;data want;
set have;
by id notsorted;
retain gwlim;
if first.id or gwill &amp;gt; 0 then gwlim = gwill;
rename gwlim = gwill1;
run;&lt;/PRE&gt;&lt;P&gt;Any help is greatly appreciated!&lt;/P&gt;</description>
      <pubDate>Wed, 10 Mar 2021 03:35:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725041#M225150</guid>
      <dc:creator>AmirSari</dc:creator>
      <dc:date>2021-03-10T03:35:13Z</dc:date>
    </item>
    <item>
      <title>Re: Repeat a value by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725044#M225151</link>
      <description>&lt;P&gt;For each ID, you apparently want GWILL1 to contain the running sum of all values of GWILL:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by id notsorted;
  gwill1+gwill;
  if first.id then gwill1=gwill;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, in the absence of a working DATA step with the sample data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And slightly more compact, but a bit more obscure:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by id notsorted;
  gwill2+ifn(first.id,gwill-gwill2,gwill);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 10 Mar 2021 03:45:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725044#M225151</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-03-10T03:45:13Z</dc:date>
    </item>
    <item>
      <title>Re: Repeat a value by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725046#M225153</link>
      <description>Thank you! This is exactly what I wanted.</description>
      <pubDate>Wed, 10 Mar 2021 03:48:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725046#M225153</guid>
      <dc:creator>AmirSari</dc:creator>
      <dc:date>2021-03-10T03:48:58Z</dc:date>
    </item>
    <item>
      <title>Re: Repeat a value by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725047#M225154</link>
      <description>&lt;P&gt;try this code&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 id date;
run;

data want;
  set have;
  by id date;
  retain gwill1;
  if first.id then gwill1=0;
  gwill1=gwill+gwill1;/* If you think of "add if greater equal to zero" as "always add," then you don't need the if statement. */
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Mar 2021 03:49:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Repeat-a-value-by-group/m-p/725047#M225154</guid>
      <dc:creator>japelin</dc:creator>
      <dc:date>2021-03-10T03:49:03Z</dc:date>
    </item>
  </channel>
</rss>

