<?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 group the obseravations depend on one value in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165673#M42952</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your posts have been mainly telling to find 10 Groups by a kind of plus or minus approach.&lt;/P&gt;&lt;P&gt;Here is an approach which may meet your needs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Algorithm used:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[1] Use the Proc univariate and get the Percentiles for Deciles(10 Groups.&lt;/P&gt;&lt;P&gt;[2] Load the Deciles in an Array, and determine the i-th group where Salaries falls.&lt;/P&gt;&lt;P&gt;[3] Have an another Array to accumulate the number of records that falls in the group.&lt;/P&gt;&lt;P&gt;[4] At the end reading the data set, Use the arrays to output Group, End_Salary, and Count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following PROC finds the ten Percentils(P_10, P_20, ....P_100).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc univariate data = have noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; var salaries;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output pctlpre = P_ pctlpts = 10 to 100 by 10;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Percentiles are:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; P_10&amp;nbsp;&amp;nbsp;&amp;nbsp; P_20&amp;nbsp;&amp;nbsp;&amp;nbsp; P_30&amp;nbsp;&amp;nbsp;&amp;nbsp; P_40&amp;nbsp;&amp;nbsp;&amp;nbsp; P_50&amp;nbsp;&amp;nbsp;&amp;nbsp; P_60&amp;nbsp;&amp;nbsp;&amp;nbsp; P_70&amp;nbsp;&amp;nbsp;&amp;nbsp; P_80&amp;nbsp;&amp;nbsp;&amp;nbsp; P_90&amp;nbsp;&amp;nbsp;&amp;nbsp; P_100&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; 1800&amp;nbsp;&amp;nbsp;&amp;nbsp; 2950&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; 4850&amp;nbsp;&amp;nbsp;&amp;nbsp; 6000&amp;nbsp;&amp;nbsp;&amp;nbsp; 6500&amp;nbsp;&amp;nbsp;&amp;nbsp; 7300&amp;nbsp;&amp;nbsp;&amp;nbsp; 8050&amp;nbsp;&amp;nbsp;&amp;nbsp; 9050&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9600&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This helps to determine the Group.&lt;/P&gt;&lt;P&gt;For instance, Salaries &amp;lt;= 1800 belongs to First Group. Salaries &amp;lt;= 6000 belongs to 5-th Group.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The program below with explanatory comments will get the output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ = 1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set data1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Load P_10 to P_100 in array k[ ] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array k&lt;LI&gt; P_:;&lt;/LI&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Have array m[ ] to hold the counts of obsevations falling in each Group */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array m[10] _temporary_;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until(eof);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have end = eof;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check the correct i and increment the counter(in m&lt;I&gt;). Then leave the i-loop&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to process the next record */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to 9;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if salaries &amp;lt;= k&lt;I&gt; then do;&lt;/I&gt;&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; m&lt;I&gt; + 1;&lt;/I&gt;&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; leave;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If Salaries &amp;gt; P_90 then increment the counter for 10-th Group */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if salaries &amp;gt; k[9] 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;&amp;nbsp;&amp;nbsp; m[10] + 1;&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; leave;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Use the Array m[ ] for COUNT and k[ ] for END_SALARY */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do group = 1 to 10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_salary = k[group];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = m[group];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;stop;&lt;/P&gt;&lt;P&gt;keep group end_salary count;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The output is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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; end_&lt;/P&gt;&lt;P&gt; group&amp;nbsp;&amp;nbsp;&amp;nbsp; salary&amp;nbsp;&amp;nbsp;&amp;nbsp; count&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1800&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2950&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4850&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7300&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8050&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9050&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 13 Feb 2015 08:17:19 GMT</pubDate>
    <dc:creator>KachiM</dc:creator>
    <dc:date>2015-02-13T08:17:19Z</dc:date>
    <item>
      <title>how to group the obseravations depend on one value</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165668#M42947</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #141823; font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; background-color: #ffffff;"&gt;Hi all, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #141823; font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; background-color: #ffffff;"&gt;data is available in pdf file. how to group the variables depend on one value. Thanks in advance all.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #141823; font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Feb 2015 10:12:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165668#M42947</guid>
      <dc:creator>Ravikumarkummari</dc:creator>
      <dc:date>2015-02-12T10:12:56Z</dc:date>
    </item>
    <item>
      <title>Re: how to group the obseravations depend on one value</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165669#M42948</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;pdf file all the information is available and desired result also available &lt;/P&gt;&lt;P&gt;so if you know the what is sufficient process for this result please post your valid comments.&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Feb 2015 11:42:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165669#M42948</guid>
      <dc:creator>Ravikumarkummari</dc:creator>
      <dc:date>2015-02-12T11:42:09Z</dc:date>
    </item>
    <item>
      <title>Re: how to group the obseravations depend on one value</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165670#M42949</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your constraints seems to be not enough. &lt;SPAN style="font-size: 13.3333330154419px;"&gt;I am getting a solution that&amp;nbsp; is fluke.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;retain Tot 0 numemp 0 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have end = eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; flag = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Tot + salaries;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; numemp + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if Tot &amp;gt; 20000 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Tot &amp;gt; 24000 and ^eof then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = tot - salaries;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tot = temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put Tot = salaries = temp =;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp; Tot = ifN(flag, Salaries, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numemp = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;keep Tot numemp;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I missed to revise the number of employees when adjustment is made.&lt;/P&gt;&lt;P&gt;The revised program takes care of this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;retain Tot 0 numemp 0 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have end = eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; flag = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Tot + salaries;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; numemp + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if Tot &amp;gt; 20000 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Tot &amp;gt; 24000 and ^eof then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = tot - salaries;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tot = temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numemp +- 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put Tot = salaries = temp =;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp; Tot = ifN(flag, Salaries, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numemp = ifN(flag, 1, 0); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;keep Tot numemp;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Feb 2015 13:51:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165670#M42949</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2015-02-12T13:51:02Z</dc:date>
    </item>
    <item>
      <title>Re: how to group the obseravations depend on one value</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165671#M42950</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It was some different from my&amp;nbsp; output. first sort the data in ascending order in this case.&lt;/P&gt;&lt;P&gt;i need only 10 groups. i am not understanding how to divide the groups. in this case only 10 groups. But some cases its only five depending on value in this case 50000. So if you know this process please post. how to divide the groups based on one value.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Feb 2015 03:49:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165671#M42950</guid>
      <dc:creator>Ravikumarkummari</dc:creator>
      <dc:date>2015-02-13T03:49:55Z</dc:date>
    </item>
    <item>
      <title>Re: how to group the obseravations depend on one value</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165672#M42951</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;sir your code is working but last two records are missing in this case. its skipping last 2 records&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Feb 2015 05:17:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165672#M42951</guid>
      <dc:creator>Ravikumarkummari</dc:creator>
      <dc:date>2015-02-13T05:17:18Z</dc:date>
    </item>
    <item>
      <title>Re: how to group the obseravations depend on one value</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165673#M42952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your posts have been mainly telling to find 10 Groups by a kind of plus or minus approach.&lt;/P&gt;&lt;P&gt;Here is an approach which may meet your needs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Algorithm used:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[1] Use the Proc univariate and get the Percentiles for Deciles(10 Groups.&lt;/P&gt;&lt;P&gt;[2] Load the Deciles in an Array, and determine the i-th group where Salaries falls.&lt;/P&gt;&lt;P&gt;[3] Have an another Array to accumulate the number of records that falls in the group.&lt;/P&gt;&lt;P&gt;[4] At the end reading the data set, Use the arrays to output Group, End_Salary, and Count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following PROC finds the ten Percentils(P_10, P_20, ....P_100).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc univariate data = have noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; var salaries;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output pctlpre = P_ pctlpts = 10 to 100 by 10;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Percentiles are:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; P_10&amp;nbsp;&amp;nbsp;&amp;nbsp; P_20&amp;nbsp;&amp;nbsp;&amp;nbsp; P_30&amp;nbsp;&amp;nbsp;&amp;nbsp; P_40&amp;nbsp;&amp;nbsp;&amp;nbsp; P_50&amp;nbsp;&amp;nbsp;&amp;nbsp; P_60&amp;nbsp;&amp;nbsp;&amp;nbsp; P_70&amp;nbsp;&amp;nbsp;&amp;nbsp; P_80&amp;nbsp;&amp;nbsp;&amp;nbsp; P_90&amp;nbsp;&amp;nbsp;&amp;nbsp; P_100&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; 1800&amp;nbsp;&amp;nbsp;&amp;nbsp; 2950&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp; 4850&amp;nbsp;&amp;nbsp;&amp;nbsp; 6000&amp;nbsp;&amp;nbsp;&amp;nbsp; 6500&amp;nbsp;&amp;nbsp;&amp;nbsp; 7300&amp;nbsp;&amp;nbsp;&amp;nbsp; 8050&amp;nbsp;&amp;nbsp;&amp;nbsp; 9050&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9600&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This helps to determine the Group.&lt;/P&gt;&lt;P&gt;For instance, Salaries &amp;lt;= 1800 belongs to First Group. Salaries &amp;lt;= 6000 belongs to 5-th Group.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The program below with explanatory comments will get the output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ = 1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set data1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Load P_10 to P_100 in array k[ ] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array k&lt;LI&gt; P_:;&lt;/LI&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Have array m[ ] to hold the counts of obsevations falling in each Group */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array m[10] _temporary_;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until(eof);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have end = eof;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check the correct i and increment the counter(in m&lt;I&gt;). Then leave the i-loop&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to process the next record */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to 9;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if salaries &amp;lt;= k&lt;I&gt; then do;&lt;/I&gt;&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; m&lt;I&gt; + 1;&lt;/I&gt;&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; leave;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If Salaries &amp;gt; P_90 then increment the counter for 10-th Group */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if salaries &amp;gt; k[9] 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;&amp;nbsp;&amp;nbsp; m[10] + 1;&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; leave;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Use the Array m[ ] for COUNT and k[ ] for END_SALARY */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do group = 1 to 10;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_salary = k[group];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = m[group];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;stop;&lt;/P&gt;&lt;P&gt;keep group end_salary count;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The output is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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; end_&lt;/P&gt;&lt;P&gt; group&amp;nbsp;&amp;nbsp;&amp;nbsp; salary&amp;nbsp;&amp;nbsp;&amp;nbsp; count&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1800&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2950&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4850&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7300&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8050&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9050&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Feb 2015 08:17:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-group-the-obseravations-depend-on-one-value/m-p/165673#M42952</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2015-02-13T08:17:19Z</dc:date>
    </item>
  </channel>
</rss>

