<?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: How to find observation ID with a blank value? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82849#M17883</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you have a lot of data that is stored on a database it may be better to use the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Create a unique variable as your ID... can be done as a view instead so you don't need to add an extra level of processing:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It would probably be better to dot his on the database side. Or you can do it locally by either using PROC SQL or DATA Step:&lt;/P&gt;&lt;P&gt;e.g.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data work.prdsale / view=work.prdsale;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set sasuser.prdsale;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ID +1; /* &amp;lt;&amp;lt; added to create a unique id*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; if DIVISION =: "CONS" &amp;amp; PRODTYPE =: "OFF" &amp;amp; PRODUCT =: "DESK" then Actual = .; /* added to create missing vals for Actuals*/&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Then utilise PROC SUMMARY, this will use multi threading and can also be passed through to the database for In-Database processing if you are using SAS/CONNECT Engines...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options msglevel=i; /* displays in log whether threads are used */&lt;/P&gt;&lt;P&gt;proc summary&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data = work.prdsale (where=(missing(ACTUAL))) missing nway;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; class _all_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output out=work.XXX_Missing_Actual (drop=_freq_ _type_);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. Then create your Macro Var :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select id into: macro_id separated by ", "&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from work.XXX_Missing_Actual ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;macro_id;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TTFN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Graham&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 15 Sep 2013 01:11:12 GMT</pubDate>
    <dc:creator>gra_in_aus</dc:creator>
    <dc:date>2013-09-15T01:11:12Z</dc:date>
    <item>
      <title>How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82840#M17874</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everybody,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a database of Product, Country, Price and VAT, and I am trying to create a Macro, that will show me every single observation ID, where the Price has no value. How can I do that? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 22:39:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82840#M17874</guid>
      <dc:creator>maqre</dc:creator>
      <dc:date>2013-09-14T22:39:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82841#M17875</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;WHERE missing(price);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;using the viewer of your choice.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 22:45:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82841#M17875</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2013-09-14T22:45:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82842#M17876</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;infile cards missover;&lt;/P&gt;&lt;P&gt;input id price ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 20&lt;/P&gt;&lt;P&gt;2 .&lt;/P&gt;&lt;P&gt;3 30&lt;/P&gt;&lt;P&gt;4 .&lt;/P&gt;&lt;P&gt;5 50&lt;/P&gt;&lt;P&gt;6 .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select id into : ids separated by ' '&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have&lt;/P&gt;&lt;P&gt;&amp;nbsp; where missing(price);&lt;/P&gt;&lt;P&gt; quit;&lt;/P&gt;&lt;P&gt; %put &amp;amp;ids;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /*&amp;nbsp; log file */&lt;/P&gt;&lt;P&gt; 17&amp;nbsp;&amp;nbsp;&amp;nbsp; %put &amp;amp;ids;&lt;/P&gt;&lt;P&gt;2 4 6&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 22:46:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82842#M17876</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2013-09-14T22:46:53Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82843#M17877</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;But my database does not have an ID column.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 23:13:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82843#M17877</guid>
      <dc:creator>maqre</dc:creator>
      <dc:date>2013-09-14T23:13:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82844#M17878</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;what do you mean by "single observation ID"? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 23:21:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82844#M17878</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2013-09-14T23:21:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82845#M17879</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I meant ID of the row. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 23:24:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82845#M17879</guid>
      <dc:creator>maqre</dc:creator>
      <dc:date>2013-09-14T23:24:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82846#M17880</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;do you want the row number?&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;infile cards missover;&lt;/P&gt;&lt;P&gt;input id$ price ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;a 20&lt;/P&gt;&lt;P&gt;b .&lt;/P&gt;&lt;P&gt;c 30&lt;/P&gt;&lt;P&gt;d .&lt;/P&gt;&lt;P&gt;e 50&lt;/P&gt;&lt;P&gt;f .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; n=_n_;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select n into : ids separated by ' '&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have&lt;/P&gt;&lt;P&gt;&amp;nbsp; where missing(price);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;ids;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Sep 2013 23:43:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82846#M17880</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2013-09-14T23:43:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82847#M17881</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi LinLin, Long time no see. I believe this can also be done within one data step:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;infile cards missover;&lt;/P&gt;&lt;P&gt;input id$ price ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;a 20&lt;/P&gt;&lt;P&gt;b .&lt;/P&gt;&lt;P&gt;c 30&lt;/P&gt;&lt;P&gt;d .&lt;/P&gt;&lt;P&gt;e 50&lt;/P&gt;&lt;P&gt;f .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; length _n $ 32767;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; retain _n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if missing(price) then _n=catx(' ',_n,_n_);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if last then call symputx('ids', _n);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; drop _n;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;ids;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 15 Sep 2013 00:38:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82847#M17881</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-09-15T00:38:05Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82848#M17882</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Haikuo,&lt;/P&gt;&lt;P&gt;It is good to see you! &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;中秋节快乐！&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 15 Sep 2013 00:48:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82848#M17882</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2013-09-15T00:48:49Z</dc:date>
    </item>
    <item>
      <title>Re: How to find observation ID with a blank value?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82849#M17883</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you have a lot of data that is stored on a database it may be better to use the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Create a unique variable as your ID... can be done as a view instead so you don't need to add an extra level of processing:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It would probably be better to dot his on the database side. Or you can do it locally by either using PROC SQL or DATA Step:&lt;/P&gt;&lt;P&gt;e.g.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data work.prdsale / view=work.prdsale;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set sasuser.prdsale;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ID +1; /* &amp;lt;&amp;lt; added to create a unique id*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; if DIVISION =: "CONS" &amp;amp; PRODTYPE =: "OFF" &amp;amp; PRODUCT =: "DESK" then Actual = .; /* added to create missing vals for Actuals*/&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Then utilise PROC SUMMARY, this will use multi threading and can also be passed through to the database for In-Database processing if you are using SAS/CONNECT Engines...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options msglevel=i; /* displays in log whether threads are used */&lt;/P&gt;&lt;P&gt;proc summary&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data = work.prdsale (where=(missing(ACTUAL))) missing nway;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; class _all_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output out=work.XXX_Missing_Actual (drop=_freq_ _type_);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. Then create your Macro Var :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select id into: macro_id separated by ", "&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from work.XXX_Missing_Actual ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;macro_id;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TTFN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Graham&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 15 Sep 2013 01:11:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-observation-ID-with-a-blank-value/m-p/82849#M17883</guid>
      <dc:creator>gra_in_aus</dc:creator>
      <dc:date>2013-09-15T01:11:12Z</dc:date>
    </item>
  </channel>
</rss>

