<?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 Cross Tabulate Data to Create FLAG on Mock Data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811518#M320102</link>
    <description>&lt;P&gt;Hi Team,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have TWO Datasets&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 1) GRADE&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 2) ACCT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;GRADE dataset is kind of a cross table. It tells the Severity -- between Grade values and Balance values&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;e.g: Grade=1 &amp;amp; BAL6=9000 -- then severity is VeryLow etc&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data Grade;&lt;BR /&gt;input Grade $ : 15. BAL1 $ BAL2 $ BAL3 $ BAL4 $ BAL5 $ BAL6 $ BAL7 $ BAL8 $ BAL9 $ BAL10 $;&lt;BR /&gt;datalines;&lt;BR /&gt;0 2200 3500 5000 6250 7500 9000 10500 12500 15000 999999&lt;BR /&gt;1 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow&lt;BR /&gt;2 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow&lt;BR /&gt;3 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low&lt;BR /&gt;4 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low&lt;BR /&gt;5 VeryLow VeryLow VeryLow VeryLow Low Low Low Low Low Medium&lt;BR /&gt;6 VeryLow VeryLow VeryLow Low Low Low Low Low Medium Medium&lt;BR /&gt;7 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium&lt;BR /&gt;8 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium&lt;BR /&gt;9 VeryLow Low Low Low Low Low Medium Medium Medium High&lt;BR /&gt;10 VeryLow Low Low Low Low Medium Medium Medium Medium High&lt;BR /&gt;11 VeryLow Low Low Low Medium Medium Medium Medium High High&lt;BR /&gt;12 Low Low Low Medium Medium Medium Medium High High High&lt;BR /&gt;13 Low Low Medium Medium Medium Medium High High High High&lt;BR /&gt;14 Low Medium Medium Medium Medium High High High High High&lt;BR /&gt;15 Low Medium Medium Medium Medium High High High High High&lt;BR /&gt;16 Low Medium Medium Medium High High High High High High&lt;BR /&gt;17 Low Medium Medium High High High High High High High&lt;BR /&gt;18 Medium Medium Medium High High High High High High High&lt;BR /&gt;19 Medium Medium High High High High High High High High&lt;BR /&gt;20 Medium Medium High High High High High High High High&lt;BR /&gt;21 Medium High High High High High High High High High&lt;BR /&gt;22 Medium High High High High High High High High High&lt;BR /&gt;23 Medium High High High High High High High High High&lt;BR /&gt;24 Medium High High High High High High High High High&lt;BR /&gt;25 Medium High High High High High High High High High&lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;data Acct;  /*Mock Data */&lt;BR /&gt;input acctno Grade Balance;&lt;BR /&gt;datalines;&lt;BR /&gt;111 1 20000&lt;BR /&gt;222 10 14550&lt;BR /&gt;9887 18 4065&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now the WANT dataset should have new column TAG-- holding the Severity values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;acctno&amp;nbsp; Grade Balance&amp;nbsp; &amp;nbsp;&lt;STRONG&gt;FLAG&lt;/STRONG&gt;&lt;BR /&gt;111&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 20000&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;VeryLow&lt;/STRONG&gt;&lt;BR /&gt;222&amp;nbsp; &amp;nbsp; &amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 14550&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;Medium&lt;/STRONG&gt;&lt;BR /&gt;9887&amp;nbsp; &amp;nbsp;18&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4065&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;Medium&lt;/STRONG&gt;&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please advice.&lt;/P&gt;
&lt;P&gt;Thank You&lt;/P&gt;</description>
    <pubDate>Wed, 04 May 2022 17:29:56 GMT</pubDate>
    <dc:creator>pdata</dc:creator>
    <dc:date>2022-05-04T17:29:56Z</dc:date>
    <item>
      <title>Cross Tabulate Data to Create FLAG on Mock Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811518#M320102</link>
      <description>&lt;P&gt;Hi Team,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have TWO Datasets&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 1) GRADE&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 2) ACCT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;GRADE dataset is kind of a cross table. It tells the Severity -- between Grade values and Balance values&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;e.g: Grade=1 &amp;amp; BAL6=9000 -- then severity is VeryLow etc&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data Grade;&lt;BR /&gt;input Grade $ : 15. BAL1 $ BAL2 $ BAL3 $ BAL4 $ BAL5 $ BAL6 $ BAL7 $ BAL8 $ BAL9 $ BAL10 $;&lt;BR /&gt;datalines;&lt;BR /&gt;0 2200 3500 5000 6250 7500 9000 10500 12500 15000 999999&lt;BR /&gt;1 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow&lt;BR /&gt;2 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow&lt;BR /&gt;3 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low&lt;BR /&gt;4 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low&lt;BR /&gt;5 VeryLow VeryLow VeryLow VeryLow Low Low Low Low Low Medium&lt;BR /&gt;6 VeryLow VeryLow VeryLow Low Low Low Low Low Medium Medium&lt;BR /&gt;7 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium&lt;BR /&gt;8 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium&lt;BR /&gt;9 VeryLow Low Low Low Low Low Medium Medium Medium High&lt;BR /&gt;10 VeryLow Low Low Low Low Medium Medium Medium Medium High&lt;BR /&gt;11 VeryLow Low Low Low Medium Medium Medium Medium High High&lt;BR /&gt;12 Low Low Low Medium Medium Medium Medium High High High&lt;BR /&gt;13 Low Low Medium Medium Medium Medium High High High High&lt;BR /&gt;14 Low Medium Medium Medium Medium High High High High High&lt;BR /&gt;15 Low Medium Medium Medium Medium High High High High High&lt;BR /&gt;16 Low Medium Medium Medium High High High High High High&lt;BR /&gt;17 Low Medium Medium High High High High High High High&lt;BR /&gt;18 Medium Medium Medium High High High High High High High&lt;BR /&gt;19 Medium Medium High High High High High High High High&lt;BR /&gt;20 Medium Medium High High High High High High High High&lt;BR /&gt;21 Medium High High High High High High High High High&lt;BR /&gt;22 Medium High High High High High High High High High&lt;BR /&gt;23 Medium High High High High High High High High High&lt;BR /&gt;24 Medium High High High High High High High High High&lt;BR /&gt;25 Medium High High High High High High High High High&lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;data Acct;  /*Mock Data */&lt;BR /&gt;input acctno Grade Balance;&lt;BR /&gt;datalines;&lt;BR /&gt;111 1 20000&lt;BR /&gt;222 10 14550&lt;BR /&gt;9887 18 4065&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now the WANT dataset should have new column TAG-- holding the Severity values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;acctno&amp;nbsp; Grade Balance&amp;nbsp; &amp;nbsp;&lt;STRONG&gt;FLAG&lt;/STRONG&gt;&lt;BR /&gt;111&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 20000&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;VeryLow&lt;/STRONG&gt;&lt;BR /&gt;222&amp;nbsp; &amp;nbsp; &amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 14550&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;Medium&lt;/STRONG&gt;&lt;BR /&gt;9887&amp;nbsp; &amp;nbsp;18&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4065&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;Medium&lt;/STRONG&gt;&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please advice.&lt;/P&gt;
&lt;P&gt;Thank You&lt;/P&gt;</description>
      <pubDate>Wed, 04 May 2022 17:29:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811518#M320102</guid>
      <dc:creator>pdata</dc:creator>
      <dc:date>2022-05-04T17:29:56Z</dc:date>
    </item>
    <item>
      <title>Re: Cross Tabulate Data to Create FLAG on Mock Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811545#M320115</link>
      <description>&lt;P&gt;That first table is in a very bad structure for lookups. Restructuring it makes the lookup trivial.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Grade;
informat GRADE 8. BAL1-BAL10 $10.;
input Grade  BAL1 $ BAL2 $ BAL3 $ BAL4 $ BAL5 $ BAL6 $ BAL7 $ BAL8 $ BAL9 $ BAL10 $;
datalines;
0 2200 3500 5000 6250 7500 9000 10500 12500 15000 999999
1 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow
2 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow
3 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low
4 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low
5 VeryLow VeryLow VeryLow VeryLow Low Low Low Low Low Medium
6 VeryLow VeryLow VeryLow Low Low Low Low Low Medium Medium
7 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium
8 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium
9 VeryLow Low Low Low Low Low Medium Medium Medium High
10 VeryLow Low Low Low Low Medium Medium Medium Medium High
11 VeryLow Low Low Low Medium Medium Medium Medium High High
12 Low Low Low Medium Medium Medium Medium High High High
13 Low Low Medium Medium Medium Medium High High High High
14 Low Medium Medium Medium Medium High High High High High
15 Low Medium Medium Medium Medium High High High High High
16 Low Medium Medium Medium High High High High High High
17 Low Medium Medium High High High High High High High
18 Medium Medium Medium High High High High High High High
19 Medium Medium High High High High High High High High
20 Medium Medium High High High High High High High High
21 Medium High High High High High High High High High
22 Medium High High High High High High High High High
23 Medium High High High High High High High High High
24 Medium High High High High High High High High High
25 Medium High High High High High High High High High
;
run;


*transpose data to long format;
proc transpose data=grade out=grade_long;
by grade;
var BAL1-BAL10;
run;

*create start and end for balance lookup;
data grade_levels;
set grade_long;
where grade=0;
prev_val = lag(col1);
if _n_=1 then start=0;
else start = prev_val+1;
end = input(col1, 8.);
keep _name_ start end;
run;

*sort for merge;
proc sort data=grade_levels;
by _name_;

proc sort data=grade_long;
by _name_;
run;

*merge balance ranges with categories;
data grade_lookup;
merge grade_long(where=(grade ne 0)) grade_levels;
by _name_;
rename col1=flag;
run;

*sort for merge;
proc sort data=grade_lookup;
by grade start end;
run;


data Acct;  
input acctno Grade Balance;
datalines;
111 1 20000
222 10 14550
9887 18 4065
;
run;

*do lookup;
proc sql;
create table want as
select t1.*, t2.flag
from acct as t1
left join grade_lookup as t2
on t1.grade=t2.grade
and t1.balance between t2.start and t2.end;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/277357"&gt;@pdata&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi Team,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have TWO Datasets&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 1) GRADE&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 2) ACCT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;GRADE dataset is kind of a cross table. It tells the Severity -- between Grade values and Balance values&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;e.g: Grade=1 &amp;amp; BAL6=9000 -- then severity is VeryLow etc&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data Grade;&lt;BR /&gt;input Grade $ : 15. BAL1 $ BAL2 $ BAL3 $ BAL4 $ BAL5 $ BAL6 $ BAL7 $ BAL8 $ BAL9 $ BAL10 $;&lt;BR /&gt;datalines;&lt;BR /&gt;0 2200 3500 5000 6250 7500 9000 10500 12500 15000 999999&lt;BR /&gt;1 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow&lt;BR /&gt;2 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow&lt;BR /&gt;3 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low&lt;BR /&gt;4 VeryLow VeryLow VeryLow VeryLow VeryLow VeryLow Low Low Low Low&lt;BR /&gt;5 VeryLow VeryLow VeryLow VeryLow Low Low Low Low Low Medium&lt;BR /&gt;6 VeryLow VeryLow VeryLow Low Low Low Low Low Medium Medium&lt;BR /&gt;7 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium&lt;BR /&gt;8 VeryLow VeryLow Low Low Low Low Low Medium Medium Medium&lt;BR /&gt;9 VeryLow Low Low Low Low Low Medium Medium Medium High&lt;BR /&gt;10 VeryLow Low Low Low Low Medium Medium Medium Medium High&lt;BR /&gt;11 VeryLow Low Low Low Medium Medium Medium Medium High High&lt;BR /&gt;12 Low Low Low Medium Medium Medium Medium High High High&lt;BR /&gt;13 Low Low Medium Medium Medium Medium High High High High&lt;BR /&gt;14 Low Medium Medium Medium Medium High High High High High&lt;BR /&gt;15 Low Medium Medium Medium Medium High High High High High&lt;BR /&gt;16 Low Medium Medium Medium High High High High High High&lt;BR /&gt;17 Low Medium Medium High High High High High High High&lt;BR /&gt;18 Medium Medium Medium High High High High High High High&lt;BR /&gt;19 Medium Medium High High High High High High High High&lt;BR /&gt;20 Medium Medium High High High High High High High High&lt;BR /&gt;21 Medium High High High High High High High High High&lt;BR /&gt;22 Medium High High High High High High High High High&lt;BR /&gt;23 Medium High High High High High High High High High&lt;BR /&gt;24 Medium High High High High High High High High High&lt;BR /&gt;25 Medium High High High High High High High High High&lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;data Acct;  /*Mock Data */&lt;BR /&gt;input acctno Grade Balance;&lt;BR /&gt;datalines;&lt;BR /&gt;111 1 20000&lt;BR /&gt;222 10 14550&lt;BR /&gt;9887 18 4065&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now the WANT dataset should have new column TAG-- holding the Severity values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;acctno&amp;nbsp; Grade Balance&amp;nbsp; &amp;nbsp;&lt;STRONG&gt;FLAG&lt;/STRONG&gt;&lt;BR /&gt;111&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 20000&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;VeryLow&lt;/STRONG&gt;&lt;BR /&gt;222&amp;nbsp; &amp;nbsp; &amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 14550&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;Medium&lt;/STRONG&gt;&lt;BR /&gt;9887&amp;nbsp; &amp;nbsp;18&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4065&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;Medium&lt;/STRONG&gt;&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please advice.&lt;/P&gt;
&lt;P&gt;Thank You&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 May 2022 19:37:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811545#M320115</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2022-05-04T19:37:16Z</dc:date>
    </item>
    <item>
      <title>Re: Cross Tabulate Data to Create FLAG on Mock Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811556#M320123</link>
      <description>Reeza, &lt;BR /&gt;&lt;BR /&gt;First let me start by saying thank you for the logic. You made it so simple and I was just going though line by line as the approach  was driven so nicely and made it so clear.&lt;BR /&gt;&lt;BR /&gt;Thank You so Much.</description>
      <pubDate>Wed, 04 May 2022 20:31:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Cross-Tabulate-Data-to-Create-FLAG-on-Mock-Data/m-p/811556#M320123</guid>
      <dc:creator>pdata</dc:creator>
      <dc:date>2022-05-04T20:31:35Z</dc:date>
    </item>
  </channel>
</rss>

