<?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: Does anyone have any idea on how to solve this? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154178#M262738</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe below code is a bit too much for beginner level - but you asked for it so here you go.&lt;/P&gt;&lt;P&gt;I didn't understand your 3rd requirement so this bit is missing. This requirement sounds like some row level logic so this shouldn't be too hard to implement (some if...then...else statements).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For adding additional columns to the output tables: you need to define the columns also in the SQL select statement, eg: SELECT *, . as CS_tech1, . as UP_tech1 FROM ...."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let Country = BRASIL JAPAN USA;&lt;BR /&gt;%let MktSeg = ENT SP SMM;&lt;/P&gt;&lt;P&gt;%macro crt_ds(ds);&lt;/P&gt;&lt;P&gt;&amp;nbsp; data &amp;amp;ds.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i = 1 %to 3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Country= scan("&amp;amp;Country.",&amp;amp;i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do j = 1 %to 3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _MktSeg= scan("&amp;amp;MktSeg.",&amp;amp;j);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*do ModelType='U','C','A';*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do tech_indx = 1 %to 10;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech1_flag_prior = int(2*ranuni(77777));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech2_flag_prior = int(2*ranuni(55555));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech1_flag_now= int(2*ranuni(123456));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech2_flag_now = int(2*ranuni(99999));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;%mend crt_ds;&lt;/P&gt;&lt;P&gt;%crt_ds(test);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create view v_test_sorted as&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select *&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from test&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by _country, _MktSeg&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* macro definition to pass variable index (1 or 2) so that SAS code needs only to be written once */&lt;BR /&gt;%macro Split_It(nr);&lt;BR /&gt;&amp;nbsp; /* define hash table */&lt;BR /&gt;&amp;nbsp; if _n_=1 then &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare hash h&amp;amp;nr. (dataset:"v_test_sorted(obs=0)",multidata:"y",hashexp:5);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..defineKey("Tech&amp;amp;nr._flag_now");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..defineData(all:"Y");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..defineDone();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; /* counter for how many more 0s than 1s in current by group */&lt;BR /&gt;&amp;nbsp; retain _Tech&amp;amp;nr._flag_now_Cnt;&lt;BR /&gt;&amp;nbsp; _Tech&amp;amp;nr._flag_now_Cnt=sum(_Tech&amp;amp;nr._flag_now_Cnt,-2*Tech&amp;amp;nr._flag_now,1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* add current row to hash table */&lt;BR /&gt;&amp;nbsp; _rc=h&amp;amp;nr..add();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if last._MktSeg then &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* remove rows until count of 1s &amp;gt;= count of 0s */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do _i=1 to _Tech&amp;amp;nr._flag_now_Cnt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..check(key:0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..removedup(key:0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* write hash table to SAS output data set */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..output(dataset:cats(_country,"_",_MktSeg,"_","tech&amp;amp;nr."));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* prep data for iteration of next by group */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..clear();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Tech&amp;amp;nr._flag_now_Cnt=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options mprint;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp; set v_test_sorted;&lt;BR /&gt;&amp;nbsp; by _country _MktSeg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* call macro passing variable index as parameter&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp; /* this generates SAS code where parameter &amp;amp;n gets replaced by the value passed&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp; /* eg. "_Tech&amp;amp;nr._flag_now_Cnt" becomes then "_Tech1_flag_now_Cnt" to be processed by the data step */&lt;BR /&gt;&amp;nbsp; %Split_It(1)&lt;BR /&gt;&amp;nbsp; %Split_It(2)&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 25 Nov 2013 08:47:19 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2013-11-25T08:47:19Z</dc:date>
    <item>
      <title>Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154169#M262729</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Does anyone have any idea on how to solve this? I have no clue and need desperate help!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: black; line-height: 115%; font-family: 'Cambria','serif'; font-size: 14pt; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: Helvetica;"&gt;The data set that is produced below&lt;BR /&gt;contains 90 observations, 9 groups of 10&lt;BR /&gt; obs. where each group is defined by the Country*MktSeg combination. The task&lt;BR /&gt;&lt;BR /&gt;is to create SAS code that will produce samples where,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL style="list-style-type: decimal;"&gt;&lt;LI&gt;&lt;SPAN style="color: black; line-height: 115%; font-family: 'Cambria','serif'; font-size: 14pt; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: Helvetica;"&gt;&lt;BR /&gt;&lt;BR /&gt;1. The naming convention for the sample data sets follows its&lt;BR /&gt;&lt;BR /&gt;corresponding country*mktseg*tech&amp;lt;n&amp;gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: black; line-height: 115%; font-family: 'Cambria','serif'; font-size: 14pt; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: Helvetica;"&gt;&lt;BR /&gt;&lt;BR /&gt;2. For each sample, tech&amp;lt;n&amp;gt;_flag_now variable contains a 50/50 ratio&lt;BR /&gt;&lt;BR /&gt;of 0’s and 1’s (using all 1’s, and if the count of 1’s &amp;gt; count 0’s, then&lt;BR /&gt;&lt;BR /&gt;50/50 ratio condition can be dismissed).&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;SPAN style="color: black; line-height: 115%; font-family: 'Cambria','serif'; font-size: 14pt; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: Helvetica; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"&gt;&lt;BR /&gt;3. Define the variable “mt” as “CS_tech&amp;lt;n&amp;gt;” if Tech&amp;lt;n&amp;gt;_flag_prior =&lt;BR /&gt;0&lt;BR /&gt;&lt;BR /&gt;and “UP_tech&amp;lt;n&amp;gt;” otherwise.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;%let Country = BRASIL JAPAN USA;&lt;BR /&gt;&lt;BR /&gt;%let MktSeg = ENT SP SMM;&lt;BR /&gt;&lt;BR /&gt;%macro crt_ds(ds);&lt;BR /&gt;&lt;BR /&gt;data &amp;amp;ds.;&lt;BR /&gt;&lt;BR /&gt;%do i = 1 %to 3;&lt;BR /&gt;&lt;BR /&gt;_Country= scan("&amp;amp;Country.",&amp;amp;i); &lt;BR /&gt;&lt;BR /&gt;%do j = 1 %to 3;&lt;BR /&gt;&lt;BR /&gt;_MktSeg= scan("&amp;amp;MktSeg.",&amp;amp;j); &lt;BR /&gt;&lt;BR /&gt;/*do ModelType='U','C','A';*/&lt;BR /&gt;&lt;BR /&gt;%do tech_indx = 1 %to 10;&lt;BR /&gt;&lt;BR /&gt;Tech1_flag_prior = int(2*ranuni(77777)); &lt;BR /&gt;&lt;BR /&gt;Tech2_flag_prior = int(2*ranuni(55555));&lt;BR /&gt;&lt;BR /&gt;Tech1_flag_now= int(2*ranuni(123456)); &lt;BR /&gt;&lt;BR /&gt;Tech2_flag_now = int(2*ranuni(99999));&lt;BR /&gt;&lt;BR /&gt;output;&lt;BR /&gt;&lt;BR /&gt;%end; %end; %end; &lt;BR /&gt;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;%mend crt_ds;&lt;BR /&gt;&lt;BR /&gt;%crt_ds(test);&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 Nov 2013 05:46:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154169#M262729</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-23T05:46:10Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154170#M262730</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The vast majority in this forum expect you to do your homework by yourself. It's also very possible that one of the members is the teacher which has given you this assignment.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suggest you give it a go and then when you really get stuck somewhere you post the code you have already developed and tell us the detail problem you need support for.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you don't know how to get started then at least post all the ideas you already had of how to tackle this so we can point you into the right direction to keep you going.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 Nov 2013 07:46:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154170#M262730</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2013-11-23T07:46:51Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154171#M262731</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't have any idea on what to be used here, maybe CALLSYMPUT()?. Do u have any? Appreciated!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 Nov 2013 20:56:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154171#M262731</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-24T20:56:42Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154172#M262732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As SAS tables can't get created during data step execution (exception: hash tables) you need first to create a macro variable containing a list of the required output tables.&lt;/P&gt;&lt;P&gt;You then can use this list in a consecutive data step.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tip: SQL using select ... Into....separated by ' ' can be used to create and populate such a macro variable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do you know how to use hash tables?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 Nov 2013 21:17:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154172#M262732</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2013-11-24T21:17:24Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154173#M262733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your message, Patrick. Appreciated!! I guess that, since I am new to SAS and the SAS community, I still don't get how in details this real work issue can be done.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 Nov 2013 22:10:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154173#M262733</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-24T22:10:11Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154174#M262734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This splitting up tables is not awfully difficult but it's also not a beginners task. On which SAS skill level do you see yourself? How much SAS experience do you have?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 02:27:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154174#M262734</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2013-11-25T02:27:44Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154175#M262735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the reply. I am at beginner's level, and due to some part of the work issue, I need to use some SAS. Sorry for that!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 03:54:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154175#M262735</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-25T03:54:34Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154176#M262736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So if I or someone else actually post a fully working solution for the data the macro you've posted creates then is this something you will be able to use even though you might not fully understand how the code works?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 05:07:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154176#M262736</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2013-11-25T05:07:32Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154177#M262737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you, Patrick, for your reply. See my level in SAS is low so that I cannot write the code at this moment, but I should be able to read, understand, and even treat it as a "sample" program for future uses and changes.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 06:25:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154177#M262737</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-25T06:25:13Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154178#M262738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe below code is a bit too much for beginner level - but you asked for it so here you go.&lt;/P&gt;&lt;P&gt;I didn't understand your 3rd requirement so this bit is missing. This requirement sounds like some row level logic so this shouldn't be too hard to implement (some if...then...else statements).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For adding additional columns to the output tables: you need to define the columns also in the SQL select statement, eg: SELECT *, . as CS_tech1, . as UP_tech1 FROM ...."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let Country = BRASIL JAPAN USA;&lt;BR /&gt;%let MktSeg = ENT SP SMM;&lt;/P&gt;&lt;P&gt;%macro crt_ds(ds);&lt;/P&gt;&lt;P&gt;&amp;nbsp; data &amp;amp;ds.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i = 1 %to 3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Country= scan("&amp;amp;Country.",&amp;amp;i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do j = 1 %to 3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _MktSeg= scan("&amp;amp;MktSeg.",&amp;amp;j);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*do ModelType='U','C','A';*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do tech_indx = 1 %to 10;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech1_flag_prior = int(2*ranuni(77777));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech2_flag_prior = int(2*ranuni(55555));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech1_flag_now= int(2*ranuni(123456));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tech2_flag_now = int(2*ranuni(99999));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;%mend crt_ds;&lt;/P&gt;&lt;P&gt;%crt_ds(test);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create view v_test_sorted as&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select *&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from test&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by _country, _MktSeg&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* macro definition to pass variable index (1 or 2) so that SAS code needs only to be written once */&lt;BR /&gt;%macro Split_It(nr);&lt;BR /&gt;&amp;nbsp; /* define hash table */&lt;BR /&gt;&amp;nbsp; if _n_=1 then &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare hash h&amp;amp;nr. (dataset:"v_test_sorted(obs=0)",multidata:"y",hashexp:5);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..defineKey("Tech&amp;amp;nr._flag_now");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..defineData(all:"Y");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..defineDone();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; /* counter for how many more 0s than 1s in current by group */&lt;BR /&gt;&amp;nbsp; retain _Tech&amp;amp;nr._flag_now_Cnt;&lt;BR /&gt;&amp;nbsp; _Tech&amp;amp;nr._flag_now_Cnt=sum(_Tech&amp;amp;nr._flag_now_Cnt,-2*Tech&amp;amp;nr._flag_now,1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* add current row to hash table */&lt;BR /&gt;&amp;nbsp; _rc=h&amp;amp;nr..add();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if last._MktSeg then &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* remove rows until count of 1s &amp;gt;= count of 0s */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do _i=1 to _Tech&amp;amp;nr._flag_now_Cnt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..check(key:0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..removedup(key:0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* write hash table to SAS output data set */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..output(dataset:cats(_country,"_",_MktSeg,"_","tech&amp;amp;nr."));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* prep data for iteration of next by group */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h&amp;amp;nr..clear();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Tech&amp;amp;nr._flag_now_Cnt=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options mprint;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp; set v_test_sorted;&lt;BR /&gt;&amp;nbsp; by _country _MktSeg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* call macro passing variable index as parameter&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp; /* this generates SAS code where parameter &amp;amp;n gets replaced by the value passed&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp; /* eg. "_Tech&amp;amp;nr._flag_now_Cnt" becomes then "_Tech1_flag_now_Cnt" to be processed by the data step */&lt;BR /&gt;&amp;nbsp; %Split_It(1)&lt;BR /&gt;&amp;nbsp; %Split_It(2)&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 08:47:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154178#M262738</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2013-11-25T08:47:19Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154179#M262739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Patrick, I am really sorry that I just checked and saw it. You are truly an expert! I hope I will understand everything. Deeply appreciated!!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 18:05:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154179#M262739</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-25T18:05:37Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone have any idea on how to solve this?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154180#M262740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, Patrick, I would like to wish you and your whole family a wonderful Thanksgiving holiday if you are in the U.S.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Nov 2013 19:32:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-have-any-idea-on-how-to-solve-this/m-p/154180#M262740</guid>
      <dc:creator>ElleMorel</dc:creator>
      <dc:date>2013-11-27T19:32:10Z</dc:date>
    </item>
  </channel>
</rss>

