<?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: Calculate a difference from &amp;quot;baseline&amp;quot; defined by multi variables in a loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432254#M107044</link>
    <description>Hello,&lt;BR /&gt;&lt;BR /&gt;When you're on the baseline row, you set the BL variable three times so that, on the following rows you're only left with the last computed BL value, BL=ITEM(3).&lt;BR /&gt;You have to store baseline values in an array.</description>
    <pubDate>Tue, 30 Jan 2018 15:27:55 GMT</pubDate>
    <dc:creator>gamotte</dc:creator>
    <dc:date>2018-01-30T15:27:55Z</dc:date>
    <item>
      <title>Calculate a difference from "baseline" defined by multi variables in a loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432245#M107039</link>
      <description>&lt;P&gt;Dear Community,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the following dataset, that describes N persons who have up to 3 visits and took 3 measures (vars) at each visit.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Person&amp;nbsp; &amp;nbsp; &amp;nbsp;Visit&amp;nbsp; &amp;nbsp;Var1 Var2 Var3&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;10&amp;nbsp; &amp;nbsp; 30&amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp;20&amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp;&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp;5&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&amp;nbsp; &amp;nbsp; &amp;nbsp; 12&amp;nbsp; &amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 10&amp;nbsp; &amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8&amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to calculate a difference from the first visit for each Var. The resulting dataset should look like this:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Person&amp;nbsp; &amp;nbsp; &amp;nbsp;Visit&amp;nbsp; &amp;nbsp;Var1 Var2 Var3&amp;nbsp; &amp;nbsp; Diff_1&amp;nbsp; &amp;nbsp; &amp;nbsp;Diff2&amp;nbsp; &amp;nbsp; Diff3&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;10&amp;nbsp; &amp;nbsp; 30&amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp;20&amp;nbsp; &amp;nbsp; &amp;nbsp;3 ..&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp;5&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp;&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-17&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp;&lt;/STRONG&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&amp;nbsp; &amp;nbsp; &amp;nbsp; 12&amp;nbsp; &amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-1&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 10&amp;nbsp; &amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8&amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I created the following code:&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------&lt;/P&gt;&lt;P&gt;PROC SORT DATA = have;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; by Person VISIT;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA want;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; SET have;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; by Person VISIT;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; RETAIN BL; //Baseline value = value for the first visit&lt;BR /&gt;&lt;BR /&gt;ARRAY ITEM{3} VAR1 - VAR3;&lt;BR /&gt;ARRAY ITEM_sinceBL{3} Var1_sinceBL Var2_sinceBL Var3_sinceBL;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DO I=1 TO 3;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if first.Person THEN BL = ITEM(I);&lt;BR /&gt;&amp;nbsp; &amp;nbsp; ELSE ITEM_sinceBL(I) = ITEM(I) - BL;&lt;BR /&gt;END;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;drop BL;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;––––––––––––––––––––––––––––––––––––––––––&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(I use look because in reality I have 18 variables.) But I don't get the right result. My BL seems to have the&amp;nbsp;wrong value.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would appreciate your help very much&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Julia&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 15:19:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432245#M107039</guid>
      <dc:creator>braverju</dc:creator>
      <dc:date>2018-01-30T15:19:08Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a difference from "baseline" defined by multi variables in a loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432254#M107044</link>
      <description>Hello,&lt;BR /&gt;&lt;BR /&gt;When you're on the baseline row, you set the BL variable three times so that, on the following rows you're only left with the last computed BL value, BL=ITEM(3).&lt;BR /&gt;You have to store baseline values in an array.</description>
      <pubDate>Tue, 30 Jan 2018 15:27:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432254#M107044</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2018-01-30T15:27:55Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a difference from "baseline" defined by multi variables in a loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432257#M107046</link>
      <description>&lt;P&gt;DONT CODE ALL IN UPPERCASE!&lt;/P&gt;
&lt;P&gt;It hurts the eyes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So what you want to do is:&lt;/P&gt;
&lt;P&gt;get baseline record, merge this onto your data, then calculate.&lt;/P&gt;
&lt;PRE&gt;data want;
  merge have 
        have (where=(visit=1) rename=var1-var_old1 var2=var_old2 var3=var_old3);&lt;BR /&gt;  by person;
  array var{3};
  array var_old{3};
  array diff_{3} 8.;
  do i=1 to 3;
    diff_{i}=var{i} - var_old{i};
  end;
run;
  &lt;/PRE&gt;
&lt;P&gt;Not tested, post test data in the form of a datastep so we have something to work with.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 15:34:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432257#M107046</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-01-30T15:34:14Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a difference from "baseline" defined by multi variables in a loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432460#M107115</link>
      <description>Thank you very much! It worked for me.</description>
      <pubDate>Tue, 30 Jan 2018 19:35:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-difference-from-quot-baseline-quot-defined-by-multi/m-p/432460#M107115</guid>
      <dc:creator>braverju</dc:creator>
      <dc:date>2018-01-30T19:35:01Z</dc:date>
    </item>
  </channel>
</rss>

