<?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: Minimum obs from dataset to cover all required levels in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125880#M1607</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your reply, data_null_;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It may be because of v9.1.3 of SAS i'm running, but I seem to be getting the following error after "fs" and "fa" definitions:&lt;/P&gt;&lt;P&gt;ERROR: The ARRAYNAME&lt;LI&gt; specification requires a variable based array.&lt;/LI&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 28 Oct 2013 14:19:29 GMT</pubDate>
    <dc:creator>DannyT</dc:creator>
    <dc:date>2013-10-28T14:19:29Z</dc:date>
    <item>
      <title>Minimum obs from dataset to cover all required levels</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125878#M1605</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;I'm stumped.&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;I want to reduce a really big data-set to fewer observations, but containing all the levels of the original data-set (at most) once. This would be done for testing purposes, so it's in our best interest to come up with final data-set that has least number of obs.&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;So if we take data-set SASHELP.CLASS for example. I would like to find out the first obs (or any non-specific obs really, but i feel it might be easier with first/last obs) that covers each individual levels of the original data-set, &lt;STRONG&gt;not&lt;/STRONG&gt; all possible (existing, or theoretical) combinations of the required variables.&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;Output would look something like this: (SASHELP.CLASS: all levels by AGE, SEX):&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;AGE has 6 distinct levels (11-16)&lt;/LI&gt;&lt;LI&gt;SEX has 2 distinct levels ("F", "M")&lt;/LI&gt;&lt;LI&gt;Least number of obs covering those levels theoretically is 6.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;So we should end up with:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;OBS #1: Affred, "M", 14&lt;/LI&gt;&lt;LI&gt;OBS #2: Alice, "F", 13&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;&lt;EM&gt;Barbara, Carol, and Henry will not be output, as both F-M and 13-14 are covered&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;OBS #3: James, "M", 12&lt;/LI&gt;&lt;LI&gt;OBS #4: Janet, "F", 15&lt;/LI&gt;&lt;LI&gt;OBS #5: Joyce, "F", 11&lt;/LI&gt;&lt;LI&gt;OBS #6: Philip, "M", 16&lt;/LI&gt;&lt;/UL&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;&lt;EM&gt;end of output&lt;/EM&gt;&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;In this case we went through data sequentially, and we've found minimum number of obs (6) satisfying the requirement, but if the levels get more lengthy (or inter-correlated), and data assorted (supposed we could pre-sort), we might end up with something that is close to minimum, but not quite minimum of longest level among required variables.&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 14px; background-color: #ffffff; color: #000000; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"&gt;I would imagine this would require some sort of recursive algorithm to get most efficiently small number of obs to cover the values, but have no clue where to start. Any help will be greatly appreciated!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Oct 2013 12:10:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125878#M1605</guid>
      <dc:creator>DannyT</dc:creator>
      <dc:date>2013-10-28T12:10:39Z</dc:date>
    </item>
    <item>
      <title>Re: Minimum obs from dataset to cover all required levels</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125879#M1606</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This seems to work.&amp;nbsp; You might replace the arrays with associative array so you don't have to guess at the dimension.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; class;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; sashelp.class;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;array&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; s[&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;3&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;] $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;_temporary_&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;array&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; a[&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;10&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;] &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;_temporary_&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; ;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; fs = whichc(sex,of s&lt;LI&gt;);&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; fs eq &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;0&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;do&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x+&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s&lt;X&gt;=sex;&lt;BR /&gt;&lt;/X&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fa= whichn(age,of a&lt;LI&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; fa eq &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;0&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;do&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y+&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a&lt;Y&gt;=age;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/Y&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;not&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; (fs &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;and&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; fa);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;drop&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; fs fa x y;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;print&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Oct 2013 12:50:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125879#M1606</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2013-10-28T12:50:08Z</dc:date>
    </item>
    <item>
      <title>Re: Minimum obs from dataset to cover all required levels</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125880#M1607</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your reply, data_null_;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It may be because of v9.1.3 of SAS i'm running, but I seem to be getting the following error after "fs" and "fa" definitions:&lt;/P&gt;&lt;P&gt;ERROR: The ARRAYNAME&lt;LI&gt; specification requires a variable based array.&lt;/LI&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Oct 2013 14:19:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125880#M1607</guid>
      <dc:creator>DannyT</dc:creator>
      <dc:date>2013-10-28T14:19:29Z</dc:date>
    </item>
    <item>
      <title>Re: Minimum obs from dataset to cover all required levels</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125881#M1608</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;remove _TEMPORARY_ and add retain&lt;/P&gt;&lt;P&gt;RETAIN s a;&lt;/P&gt;&lt;P&gt;and maybe drop s1-s3 a1-a10;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Oct 2013 15:03:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Minimum-obs-from-dataset-to-cover-all-required-levels/m-p/125881#M1608</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2013-10-28T15:03:57Z</dc:date>
    </item>
  </channel>
</rss>

