<?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: Fill in observations of controls to match value of cases (by panel/group) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751821#M236729</link>
    <description>&lt;P&gt;I guess you just need this after all?-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
 do _n=1 by 1 until(last.id) ;
   set have ;
   by id;
   array t(99) _temporary_;
   if mod(_n_,2) then t(_n)=time;
   else time=t(_n);
   output;
 end;
 drop _: ;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 02 Jul 2021 20:43:10 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2021-07-02T20:43:10Z</dc:date>
    <item>
      <title>Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751808#M236720</link>
      <description>&lt;P&gt;Hi all, quick question about populating missing values by group, but doing so systematically so that the pattern of data for the 'cases' is applied to the 'controls'. I've included a Have/Want example.&amp;nbsp;The only thing different between this sample and what i want is that there are multiple controls per case (e.g., 6:1), but they are sorted so that once a new case occurs the pattern will repeat itself following the same logic. Thank you for any advice to help me figure it out. I think it needs a do loop in order to get the same pattern, but so far what i've been able to get is not correct. Nate&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;DATA Have; &lt;BR /&gt;INPUT ID $ Case Set Time ;&lt;BR /&gt;CARDS;&lt;/P&gt;
&lt;P&gt;A 1 1 -3&lt;BR /&gt;A 1 1 -2&lt;BR /&gt;A 1 1 -1&lt;BR /&gt;A 1 1 0&lt;BR /&gt;A 1 1 1&lt;BR /&gt;A 1 1 2&lt;BR /&gt;A 1 1 3&lt;BR /&gt;B 0 1 .&lt;BR /&gt;B 0 1 .&lt;BR /&gt;B 0 1 .&lt;BR /&gt;B 0 1 .&lt;BR /&gt;B 0 1 .&lt;BR /&gt;B 0 1 .&lt;BR /&gt;B 0 1 .&lt;BR /&gt;C 1 2 -2&lt;BR /&gt;C 1 2 -1&lt;BR /&gt;C 1 2 0&lt;BR /&gt;C 1 2 1&lt;BR /&gt;C 1 2 2&lt;BR /&gt;C 1 2 3&lt;BR /&gt;C 1 2 4&lt;BR /&gt;D 0 2 .&lt;BR /&gt;D 0 2 .&lt;BR /&gt;D 0 2 .&lt;BR /&gt;D 0 2 .&lt;BR /&gt;D 0 2 .&lt;BR /&gt;D 0 2 .&lt;BR /&gt;D 0 2 .&lt;BR /&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA Want; &lt;BR /&gt;INPUT ID $ Case Set Time ;&lt;BR /&gt;CARDS;&lt;/P&gt;
&lt;P&gt;A 1 1 -3&lt;BR /&gt;A 1 1 -2&lt;BR /&gt;A 1 1 -1&lt;BR /&gt;A 1 1 0&lt;BR /&gt;A 1 1 1&lt;BR /&gt;A 1 1 2&lt;BR /&gt;A 1 1 3&lt;BR /&gt;B 0 1 -3&lt;BR /&gt;B 0 1 -2&lt;BR /&gt;B 0 1 -1&lt;BR /&gt;B 0 1 0&lt;BR /&gt;B 0 1 1&lt;BR /&gt;B 0 1 2&lt;BR /&gt;B 0 1 3&lt;BR /&gt;C 1 2 -2&lt;BR /&gt;C 1 2 -1&lt;BR /&gt;C 1 2 0&lt;BR /&gt;C 1 2 1&lt;BR /&gt;C 1 2 2&lt;BR /&gt;C 1 2 3&lt;BR /&gt;C 1 2 4&lt;BR /&gt;D 0 2 -2&lt;BR /&gt;D 0 2 -1&lt;BR /&gt;D 0 2 0&lt;BR /&gt;D 0 2 1&lt;BR /&gt;D 0 2 2&lt;BR /&gt;D 0 2 3&lt;BR /&gt;D 0 2 4&lt;BR /&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 02 Jul 2021 19:12:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751808#M236720</guid>
      <dc:creator>N8</dc:creator>
      <dc:date>2021-07-02T19:12:06Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751819#M236727</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/105992"&gt;@N8&lt;/a&gt;&amp;nbsp;Assuming i understand your requirement-&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
DATA Have; 
INPUT ID $ Case Set Time ;
CARDS;
A 1 1 -3
A 1 1 -2
A 1 1 -1
A 1 1 0
A 1 1 1
A 1 1 2
A 1 1 3
B 0 1 .
B 0 1 .
B 0 1 .
B 0 1 .
B 0 1 .
B 0 1 .
B 0 1 .
C 1 2 -2
C 1 2 -1
C 1 2 0
C 1 2 1
C 1 2 2
C 1 2 3
C 1 2 4
D 0 2 .
D 0 2 .
D 0 2 .
D 0 2 .
D 0 2 .
D 0 2 .
D 0 2 .
;


data want ;
  do _n=1 by 1 until(last.id) ;
    set have ;
    by id ;
	if mod(_n_,2) then continue ;
	array t(9999) _temporary_;
	time=t(_n) ;
	output ;
  end;
  call missing(of t(*)) ;
  do _n=1 by 1 until(last.id) ;
    set have ;
	by id ;
	if mod(_n_,2)=0 then continue ;
	t(_n)=time ;
	output ;
  end;
  drop _: ;
run ;
 
proc print noobs ;run ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l header" scope="col"&gt;ID&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;Case&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;Set&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;Time&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Fri, 02 Jul 2021 19:44:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751819#M236727</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-07-02T19:44:58Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751821#M236729</link>
      <description>&lt;P&gt;I guess you just need this after all?-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
 do _n=1 by 1 until(last.id) ;
   set have ;
   by id;
   array t(99) _temporary_;
   if mod(_n_,2) then t(_n)=time;
   else time=t(_n);
   output;
 end;
 drop _: ;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 02 Jul 2021 20:43:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751821#M236729</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-07-02T20:43:10Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751828#M236732</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;A title="A reply to novinosrin's message from 07-02-2021" href="https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751819#M236727" target="_blank"&gt;novinosrin&lt;/A&gt;&amp;nbsp;- Sadly, no. I think one of the issue is that my actual ID variables aren't ordered consecutively - it's random alpha/numeric - so the primary variable that it has to match on is the 'setnumbr' (i.e., i want to populate all the missing setnumbr values with the values for the 'cases' of the same setnumbr), but they need to correspond to the same year + group ID that corresponds with the values for the 'cases'. I'll keep plugging away at it. I appreciate the effort! thank you!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 02 Jul 2021 22:12:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751828#M236732</guid>
      <dc:creator>N8</dc:creator>
      <dc:date>2021-07-02T22:12:33Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751829#M236733</link>
      <description>&lt;P&gt;Hi &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/105992"&gt;@N8&lt;/a&gt;&amp;nbsp;Okay never mind.&amp;nbsp; Can you please post a more representative sample of what you &lt;STRONG&gt;have&lt;/STRONG&gt; and the &lt;STRONG&gt;want&lt;/STRONG&gt; with the YEAR variable and so forth. Also, please explain the logic with the modified sample. That can only help us avoid assumptions/guesses. Thanks!&lt;/P&gt;</description>
      <pubDate>Fri, 02 Jul 2021 22:21:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751829#M236733</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-07-02T22:21:37Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751841#M236739</link>
      <description>&lt;P&gt;No worries. I've been working with setting it up with a do loop, but i'm only able to get the first value to match.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is a pretty good pared down replication of the source file. What I am trying to do is replicate the "pattern_var" so that all of the Case=0 values that belong to the same "set" as its corresponding "case" get the same corresponding value as the case has in the "pattern_var". Where I get hung up is that I need to get the code to cycle through the ID + year so that the controls get the same corresponding value as the case for each year. If I haven't exhausted your kindness... &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA Have;&lt;BR /&gt;INPUT ID $ year Case Set pattern_var ;&lt;BR /&gt;CARDS;&lt;/P&gt;
&lt;P&gt;A1 1 1 1 -3&lt;BR /&gt;A1 2 1 1 -2&lt;BR /&gt;A1 3 1 1 -1&lt;BR /&gt;B2 1 0 1 .&lt;BR /&gt;B2 2 0 1 .&lt;BR /&gt;B2 3 0 1 .&lt;BR /&gt;L5 1 0 1 .&lt;BR /&gt;L5 2 0 1 .&lt;BR /&gt;L5 3 0 1 .&lt;BR /&gt;C8 1 1 2 -2&lt;BR /&gt;C8 2 1 2 -1&lt;BR /&gt;C8 3 1 2 0&lt;BR /&gt;A4 1 0 2 .&lt;BR /&gt;A4 2 0 2 .&lt;BR /&gt;A4 3 0 2 .&lt;BR /&gt;D8 1 0 2 .&lt;BR /&gt;D8 2 0 2 .&lt;BR /&gt;D8 3 0 2 .&lt;BR /&gt;Z9 1 1 3 2&lt;BR /&gt;Z9 2 1 3 3&lt;BR /&gt;Z9 3 1 3 4&lt;BR /&gt;K8 1 0 3 .&lt;BR /&gt;K8 2 0 3 .&lt;BR /&gt;K8 3 0 3 .&lt;BR /&gt;R3 1 0 3 .&lt;BR /&gt;R3 2 0 3 .&lt;BR /&gt;R3 3 0 3 .&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;</description>
      <pubDate>Sat, 03 Jul 2021 01:06:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751841#M236739</guid>
      <dc:creator>N8</dc:creator>
      <dc:date>2021-07-03T01:06:22Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751904#M236772</link>
      <description>&lt;P&gt;Hi again&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/105992"&gt;@N8&lt;/a&gt;&amp;nbsp; Thank you for posting the modified sample. My understanding is that for each group of a set, there are&amp;nbsp; 2 distinct cases(1 and 0) and the records for each set begins with case=1 with a non missing pattern_var. I guess this pattern pretty much holds true across all sets beginning with records with case=1 with non missing pattern_var begins followed case=0 with missing pattern_var. The objective is to peek the corresponding pattern_var occurring in a certain year within&amp;nbsp; case=1, retrieve and update the corresponding year's pattern_var for cases=0 within a set.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If the above is correct, the following should suffice I think-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA Have;
INPUT ID $ year Case Set pattern_var ;
CARDS;
A1 1 1 1 -3
A1 2 1 1 -2
A1 3 1 1 -1
B2 1 0 1 .
B2 2 0 1 .
B2 3 0 1 .
L5 1 0 1 .
L5 2 0 1 .
L5 3 0 1 .
C8 1 1 2 -2
C8 2 1 2 -1
C8 3 1 2 0
A4 1 0 2 .
A4 2 0 2 .
A4 3 0 2 .
D8 1 0 2 .
D8 2 0 2 .
D8 3 0 2 .
Z9 1 1 3 2
Z9 2 1 3 3
Z9 3 1 3 4
K8 1 0 3 .
K8 2 0 3 .
K8 3 0 3 .
R3 1 0 3 .
R3 2 0 3 .
R3 3 0 3 .
;

data want ;
  if _n_=1 then do ;
    dcl hash h() ;
    h.definekey('year') ;
    h.definedata('pattern_var') ;
    h.definedone() ;
  end ;
  do _n_=h.clear() by 0 until(last.set) ;
    do until(last.case) ;
      set have ;
	  by set case notsorted ;
	  if case=1 then h.replace() ;
      else h.find() ;
	  output ;
    end ;
  end ;
run ;

proc print noobs ;run ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l header" scope="col"&gt;ID&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;year&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;Case&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;Set&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;pattern_var&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;B2&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;L5&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;L5&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;L5&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C8&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C8&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;C8&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A4&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A4&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;A4&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D8&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D8&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;-1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;D8&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;Z9&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;Z9&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;Z9&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;K8&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;K8&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;K8&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;R3&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;R3&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;R3&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 03 Jul 2021 14:14:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751904#M236772</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-07-03T14:14:22Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751906#M236773</link>
      <description>&lt;P&gt;Thank you! it works perfectly on the sample, but when i try it on my SAS dataset i keep getting a "key not found" error with it. Any idea why the hash table would give issues? thanks again for your time and all the help. N8&lt;/P&gt;</description>
      <pubDate>Sat, 03 Jul 2021 14:15:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751906#M236773</guid>
      <dc:creator>N8</dc:creator>
      <dc:date>2021-07-03T14:15:07Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751907#M236774</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/105992"&gt;@N8&lt;/a&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;"key not found" error&amp;nbsp; means the FIND method is failing which effectively means the pattern CASE=0 has some year values not existing in CASE=1's year values. Now, are you sure the pattern CASE=1 will have all year values that of CASE=0 in a set. I kinda feared this assumption might not be accurate.&amp;nbsp; Can you please check your data thoroughly and let me know, so that I can tweak.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A simulation of the ERROR: Key not found--&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;CARDS;&lt;BR /&gt;A1 1 1 1 -3&lt;BR /&gt;A1 2 1 1 -2&lt;BR /&gt;A1 3 1 1 -1&lt;BR /&gt;B2 1 0 1 .&lt;BR /&gt;B2 2 0 1 .&lt;BR /&gt;B2 3 0 1 .&lt;BR /&gt;&lt;STRONG&gt;B2 4 0 1 .&amp;nbsp; /*add this to the sample and run again*/&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF0000"&gt;&lt;SPAN&gt;&lt;STRONG&gt;That will cause Key not found error.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 03 Jul 2021 14:29:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751907#M236774</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-07-03T14:29:38Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751908#M236775</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA Have;
INPUT ID $ year Case Set pattern_var ;
CARDS;
A1 1 1 1 -3
A1 2 1 1 -2
A1 3 1 1 -1
B2 1 0 1 .
B2 2 0 1 .
B2 3 0 1 .
L5 1 0 1 .
L5 2 0 1 .
L5 3 0 1 .
C8 1 1 2 -2
C8 2 1 2 -1
C8 3 1 2 0
A4 1 0 2 .
A4 2 0 2 .
A4 3 0 2 .
D8 1 0 2 .
D8 2 0 2 .
D8 3 0 2 .
Z9 1 1 3 2
Z9 2 1 3 3
Z9 3 1 3 4
K8 1 0 3 .
K8 2 0 3 .
K8 3 0 3 .
R3 1 0 3 .
R3 2 0 3 .
R3 3 0 3 .
;

data want;
 set have;
 array x{99999} _temporary_;
 if not missing(pattern_var) then x{year}=pattern_var;
   else pattern_var=x{year};
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 03 Jul 2021 14:26:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751908#M236775</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-07-03T14:26:38Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751919#M236786</link>
      <description>&lt;P&gt;outstanding! I will log on to the server Monday and let you know. Thanks again for your help on this. Much appreciated. More soon, Nate&lt;/P&gt;</description>
      <pubDate>Sat, 03 Jul 2021 16:55:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/751919#M236786</guid>
      <dc:creator>N8</dc:creator>
      <dc:date>2021-07-03T16:55:50Z</dc:date>
    </item>
    <item>
      <title>Re: Fill in observations of controls to match value of cases (by panel/group)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/752271#M236942</link>
      <description>&lt;P&gt;Many thanks for all your help - appreciate all the input and time. nate&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jul 2021 11:58:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Fill-in-observations-of-controls-to-match-value-of-cases-by/m-p/752271#M236942</guid>
      <dc:creator>N8</dc:creator>
      <dc:date>2021-07-06T11:58:51Z</dc:date>
    </item>
  </channel>
</rss>

