<?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: change data value until a certain condition is true in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628065#M18825</link>
    <description>&lt;P&gt;Here you go. It isn't extremely efficient, because you could theoretically have to process the entire data set twice (if your first binT=1 value is last) but for small-ish data sets it should get the job done. The idea is to first loop through the data and identify where the first binT=1 value appears. LEAVE-ing the loop immediately sets the value of i to the record where this occurs. Next, just loop through all the data and change the value of binT for those early records.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  if 0 then set have nobs = _nobs;
  do i = 1 to _nobs;
    set have point = i;
    if bint = 1 then leave;
  end;
  do j = 1 to _nobs;
    set have point = j;
    if j &amp;lt; i then bint = 1;
    output;
  end;
  stop;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 27 Feb 2020 22:25:49 GMT</pubDate>
    <dc:creator>Duggins</dc:creator>
    <dc:date>2020-02-27T22:25:49Z</dc:date>
    <item>
      <title>change data value until a certain condition is true</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628059#M18824</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm generating samples and I'm trying to change a binary value in one particular column of the generated data. The data is sorted from large to small values in the T column and the binary values (BinT) should be 1 for values of T larger than the first T value where BinT=1.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So, the following dataset&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Id&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;binT&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;46&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;34&lt;/TD&gt;&lt;TD&gt;39&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;64&lt;/TD&gt;&lt;TD&gt;38&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;57&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;76&lt;/TD&gt;&lt;TD&gt;34&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;46&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;70&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;53&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;should look like&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Obs&lt;/TD&gt;&lt;TD&gt;Id&lt;/TD&gt;&lt;TD&gt;T&lt;/TD&gt;&lt;TD&gt;binT&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;46&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;34&lt;/TD&gt;&lt;TD&gt;39&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;64&lt;/TD&gt;&lt;TD&gt;38&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;57&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;76&lt;/TD&gt;&lt;TD&gt;34&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;46&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;70&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;53&lt;/TD&gt;&lt;TD&gt;30&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;I have tried several things, such as&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want; 
_binT1=binT1; 
do until(done); 
set have;
done= (binT1=1);
if ^done then _binT1=1;
end; 
output; 
run; &lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;and&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test; 
x=binT1; 
do _N_=1; 
set treat_test;
if binT1=1 then leave;
else x=1; 
end;  
run; &lt;/CODE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;but that does lead to the desired result.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hoping that someone can point me into the right direction.&lt;/P&gt;&lt;P&gt;Best.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Jo&lt;/P&gt;</description>
      <pubDate>Thu, 27 Feb 2020 21:53:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628059#M18824</guid>
      <dc:creator>JoVe</dc:creator>
      <dc:date>2020-02-27T21:53:07Z</dc:date>
    </item>
    <item>
      <title>Re: change data value until a certain condition is true</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628065#M18825</link>
      <description>&lt;P&gt;Here you go. It isn't extremely efficient, because you could theoretically have to process the entire data set twice (if your first binT=1 value is last) but for small-ish data sets it should get the job done. The idea is to first loop through the data and identify where the first binT=1 value appears. LEAVE-ing the loop immediately sets the value of i to the record where this occurs. Next, just loop through all the data and change the value of binT for those early records.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  if 0 then set have nobs = _nobs;
  do i = 1 to _nobs;
    set have point = i;
    if bint = 1 then leave;
  end;
  do j = 1 to _nobs;
    set have point = j;
    if j &amp;lt; i then bint = 1;
    output;
  end;
  stop;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 27 Feb 2020 22:25:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628065#M18825</guid>
      <dc:creator>Duggins</dc:creator>
      <dc:date>2020-02-27T22:25:49Z</dc:date>
    </item>
    <item>
      <title>Re: change data value until a certain condition is true</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628399#M18851</link>
      <description>&lt;P&gt;Works as a charm!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you dugginsj.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 29 Feb 2020 09:21:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/change-data-value-until-a-certain-condition-is-true/m-p/628399#M18851</guid>
      <dc:creator>JoVe</dc:creator>
      <dc:date>2020-02-29T09:21:33Z</dc:date>
    </item>
  </channel>
</rss>

