<?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: Set observations to zero based on multiple conditions of grouped variables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Set-observations-to-zero-based-on-multiple-conditions-of-grouped/m-p/742838#M232446</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;here you go:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PtID Visit $ Type $ Target days;
datalines;
1 4M A 100 101
1 4M A 100 120
1 4M C 100 110
1 8M B 200 210
1 8M C 200 220
2 4M B 100 101
2 4M D 100 120
;
run;

proc sort data=test sortseq=linguistic(numeric_collation=on);
   by PtID Visit Type days; 
run;

data want;
   set have;
   by PtID Visit Type days;
   if not first.Visit then Type='';
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 21 May 2021 07:33:49 GMT</pubDate>
    <dc:creator>Oligolas</dc:creator>
    <dc:date>2021-05-21T07:33:49Z</dc:date>
    <item>
      <title>Set observations to zero based on multiple conditions of grouped variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-observations-to-zero-based-on-multiple-conditions-of-grouped/m-p/742652#M232351</link>
      <description>&lt;P&gt;Dataset that I have:&lt;/P&gt;&lt;P&gt;PtID&amp;nbsp; &amp;nbsp;Visit Type Target days&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4M&amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;100 101&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4M&amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;100 120&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4M&amp;nbsp; &amp;nbsp;C&amp;nbsp; &amp;nbsp; &amp;nbsp; 100&amp;nbsp; 110&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8M&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;200 210&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8M&amp;nbsp; &amp;nbsp;C&amp;nbsp; &amp;nbsp; &amp;nbsp; 200 220&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4M&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; 100 101&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4M&amp;nbsp; &amp;nbsp;D&amp;nbsp; &amp;nbsp; &amp;nbsp;100 120&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Expected output dataset:&lt;BR /&gt;PtID&amp;nbsp; &amp;nbsp; Visit Type Target days&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4M&amp;nbsp; &amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp;100 101&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4M&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; 100 120&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4M&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; 100 110&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8M&amp;nbsp; &amp;nbsp; B&amp;nbsp; &amp;nbsp; &amp;nbsp; 200 210&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8M&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; 200 220&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4M&amp;nbsp; &amp;nbsp; B&amp;nbsp; &amp;nbsp; &amp;nbsp;100 101&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4M&amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; 100 120&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset with multiple visit data for each PtID. For each PtID, at each visit, only one observation is valid and the rest should be coded to missing (as in the expected output)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rules:&lt;BR /&gt;1) For each PtID, for each visit, if there are multiple ‘A’ visits, then chose the visit where days is closest to the target date (101 is closer to 100 target days), and set the rest of the visit group to missing&lt;BR /&gt;2) For each PtID, for each visit, if there is no visit of type ‘A’, then we chose visit type ‘B’, and set the rest of the visit group (eg:4M) to missing&lt;BR /&gt;3) For each PtID, for each visit, if there is no visit of type ‘A’ or ‘B’, then we chose visit type ‘C’, and set the rest of visit group to missing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 May 2021 13:48:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-observations-to-zero-based-on-multiple-conditions-of-grouped/m-p/742652#M232351</guid>
      <dc:creator>KATHY1</dc:creator>
      <dc:date>2021-05-20T13:48:56Z</dc:date>
    </item>
    <item>
      <title>Re: Set observations to zero based on multiple conditions of grouped variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-observations-to-zero-based-on-multiple-conditions-of-grouped/m-p/742838#M232446</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;here you go:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PtID Visit $ Type $ Target days;
datalines;
1 4M A 100 101
1 4M A 100 120
1 4M C 100 110
1 8M B 200 210
1 8M C 200 220
2 4M B 100 101
2 4M D 100 120
;
run;

proc sort data=test sortseq=linguistic(numeric_collation=on);
   by PtID Visit Type days; 
run;

data want;
   set have;
   by PtID Visit Type days;
   if not first.Visit then Type='';
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 21 May 2021 07:33:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-observations-to-zero-based-on-multiple-conditions-of-grouped/m-p/742838#M232446</guid>
      <dc:creator>Oligolas</dc:creator>
      <dc:date>2021-05-21T07:33:49Z</dc:date>
    </item>
  </channel>
</rss>

