<?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: Selecting first non-missing value for each participant ID in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172896#M264418</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt; select distinct pid,event,var from have group by pid,event having var=max(var);&lt;BR /&gt; quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 09 Jul 2014 16:00:27 GMT</pubDate>
    <dc:creator>slchen</dc:creator>
    <dc:date>2014-07-09T16:00:27Z</dc:date>
    <item>
      <title>Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172891#M264413</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a data set containing many participants. Each participant has multiple events. For each participant and each event, I want a list of the variable value. This might be best described by demonstration:&lt;/P&gt;&lt;P&gt;For example,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EVENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VAR&lt;/P&gt;&lt;P&gt;1392&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&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;1392&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&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; 13&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1392&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1392&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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; 12&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&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; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&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;2456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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;2456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to end up with a list like this:&lt;/P&gt;&lt;P&gt;PID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EVENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VAR&lt;/P&gt;&lt;P&gt;1392&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&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; 13&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1392&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&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; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there a particular method for doing this? Participants have more than one EVENT. And within each EVENT, VAR is the same (but some observations are .) In some cases, VAR is . for the entire event. In other cases, VAR is . for only a few cases within an EVENT.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 15:23:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172891#M264413</guid>
      <dc:creator>karns</dc:creator>
      <dc:date>2014-07-09T15:23:59Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172892#M264414</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Assuming you can't have records with all missing, then remove missing at the start and then keep only the first occurrence. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=have;&lt;/P&gt;&lt;P&gt;by pid event;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;where var ne .;&lt;/P&gt;&lt;P&gt;by pid event;&lt;/P&gt;&lt;P&gt;if first.event;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 15:35:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172892#M264414</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-07-09T15:35:20Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172893#M264415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;if event=1 and var=. then delete;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;select distinct pid,event,var&lt;BR /&gt;from want;&lt;BR /&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 15:42:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172893#M264415</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-07-09T15:42:18Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172894#M264416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Let's call your first data example ds1 to get ds2 (second data example) try the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ds2 (drop = issetflg);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain issetflg;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set ds1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by pid event;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.event then issetflg = 'N';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if var ne . then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; issetflg = 'Y';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.event then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if issetflg = 'N' then&lt;/P&gt;&lt;P&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; output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 15:45:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172894#M264416</guid>
      <dc:creator>eirhpaul</dc:creator>
      <dc:date>2014-07-09T15:45:03Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172895#M264417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Assuming the data is already sorted by pid and event, try this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;by pid event;&lt;/P&gt;&lt;P&gt;retain found;&lt;/P&gt;&lt;P&gt;if first.event then found = 0;&lt;/P&gt;&lt;P&gt;if found = 0 and ( not missing( var ) or last.event ) then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found = 1;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 15:49:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172895#M264417</guid>
      <dc:creator>FloydNevseta</dc:creator>
      <dc:date>2014-07-09T15:49:12Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172896#M264418</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt; select distinct pid,event,var from have group by pid,event having var=max(var);&lt;BR /&gt; quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 16:00:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172896#M264418</guid>
      <dc:creator>slchen</dc:creator>
      <dc:date>2014-07-09T16:00:27Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting first non-missing value for each participant ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172897#M264419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here's another approach:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have (rename=(var=varx));&lt;/P&gt;&lt;P&gt;by pid event;&lt;/P&gt;&lt;P&gt;retain var;&lt;/P&gt;&lt;P&gt;if first.event then var = .;&lt;/P&gt;&lt;P&gt;var = coalesce( var, varx );&lt;/P&gt;&lt;P&gt;if last.event then output;&lt;/P&gt;&lt;P&gt;drop varx;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2014 16:01:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-first-non-missing-value-for-each-participant-ID/m-p/172897#M264419</guid>
      <dc:creator>FloydNevseta</dc:creator>
      <dc:date>2014-07-09T16:01:09Z</dc:date>
    </item>
  </channel>
</rss>

