<?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: Patient drug sequence groups in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972335#M377468</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/235176"&gt;@pink_poodle&lt;/a&gt;&amp;nbsp;, the complete steps are as follows (using proc transpose to produce the group column):&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	input patient time drug $;
	datalines;
1 1 A
1 2 B
1 3 B
2 1 B
2 2 A
;
run;
proc print data=have;run;
data have1;
   set have;
   timechar=cat('t',put(time,1.));
run;
proc print data=have1;run;
proc transpose data=have1 out=want;
   by patient;
   id timechar;
   var drug;
run;
proc print data=want;run;
data want1;
   set want;
   group=compress(cat(t1,t2,t3));
run;
proc print data=want1;run;
proc sql;
select h.*,
       w1.group
   from have as h left join
        want1 w1
   on h.patient=w1.patient;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_0-1754659476413.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108916iE22B8AC4C0F7766C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_0-1754659476413.png" alt="dxiao2017_0-1754659476413.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_1-1754659535104.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108917iD75A26D281DE51B0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_1-1754659535104.png" alt="dxiao2017_1-1754659535104.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 08 Aug 2025 13:26:17 GMT</pubDate>
    <dc:creator>dxiao2017</dc:creator>
    <dc:date>2025-08-08T13:26:17Z</dc:date>
    <item>
      <title>Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914784#M360485</link>
      <description>&lt;P&gt;I have a table with three variables: patient, time, drug. Let us say there are two patients. First patient received drug A at time 1 followed by drug B at time 2. Second patient received drug B at time 1 followed by drug A at time 2. I want to accumulate a substring for the group variable, such that patient 1 belongs to group "AB" and patient 2&amp;nbsp; belong to group "BA". Any suggestions are welcome!&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
	input patient time drug $ group $;
	datalines;
		1 1 A AB
		1 2 B AB
		2 1 B BA
		2 2 A BA
	;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Feb 2024 23:52:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914784#M360485</guid>
      <dc:creator>pink_poodle</dc:creator>
      <dc:date>2024-02-06T23:52:45Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914793#M360491</link>
      <description>What is your question?</description>
      <pubDate>Wed, 07 Feb 2024 02:24:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914793#M360491</guid>
      <dc:creator>rvikram</dc:creator>
      <dc:date>2024-02-07T02:24:37Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914794#M360492</link>
      <description>If I were you, I’d check the syntax for data lines again.&lt;BR /&gt;&lt;BR /&gt;You need infile statement, and preferably a DLM keyword. Please check again.</description>
      <pubDate>Wed, 07 Feb 2024 02:26:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914794#M360492</guid>
      <dc:creator>rvikram</dc:creator>
      <dc:date>2024-02-07T02:26:02Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914795#M360493</link>
      <description>My question is how to accumulate a substring for the group variable, such that patient 1 belongs to group "AB" and patient 2  belong to group "BA" ?</description>
      <pubDate>Wed, 07 Feb 2024 02:26:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914795#M360493</guid>
      <dc:creator>pink_poodle</dc:creator>
      <dc:date>2024-02-07T02:26:07Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914798#M360494</link>
      <description>If you are looking to group certain variables, you can write a proc sql step with group by.&lt;BR /&gt;&lt;BR /&gt;If you don’t want duplicate values, you can write a proc sort step with nodup, or select distinct within proc sql.&lt;BR /&gt;</description>
      <pubDate>Wed, 07 Feb 2024 02:32:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914798#M360494</guid>
      <dc:creator>rvikram</dc:creator>
      <dc:date>2024-02-07T02:32:54Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914801#M360496</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*Assuming there are no duplicated obs in your data*/
data have;
	input patient time drug $;
	datalines;
		1 1 A 
		1 2 B 
		2 1 B 
		2 2 A 
	;
run;

data want;
do until(last.patient);
 set have;
 by patient;
 length group $ 10;
 group=cats(group,drug);
end;
do until(last.patient);
 set have;
 by patient;
 output;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Feb 2024 02:37:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914801#M360496</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-02-07T02:37:22Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914804#M360497</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/463517"&gt;@rvikram&lt;/a&gt;, it should work, please give it a try :).</description>
      <pubDate>Wed, 07 Feb 2024 02:46:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914804#M360497</guid>
      <dc:creator>pink_poodle</dc:creator>
      <dc:date>2024-02-07T02:46:33Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914805#M360498</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;, thank you, this is very helpful! I would like to have "ABB" group for duplicates, could you please advice?:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
	input patient time drug $ group $;
	datalines;
		1 1 A ABB
		1 2 B ABB
		1 3 B ABB
		2 1 B BA
		2 2 A BA
	;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Feb 2024 02:58:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914805#M360498</guid>
      <dc:creator>pink_poodle</dc:creator>
      <dc:date>2024-02-07T02:58:52Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914806#M360499</link>
      <description>&lt;P&gt;Pass through each ID twice, once to build GROUP, once to output it:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input patient time drug $;
  datalines;
1 1 A 
1 2 B 
2 1 B 
2 2 A 
run;

data want;
  set have (in=firstpass)
      have (in=secondpass);
  by id;
  retain group '          ' ;  /*As many blanks as needed for group */
  if first.id then group=drug;
  else if firstpass then group=cats(group,drug);
  if secondpass;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Feb 2024 02:58:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914806#M360499</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2024-02-07T02:58:30Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914808#M360500</link>
      <description>Just try my original code. No need any change.</description>
      <pubDate>Wed, 07 Feb 2024 03:01:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/914808#M360500</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-02-07T03:01:23Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/971502#M377351</link>
      <description>&lt;P&gt;Sure! You can achieve this easily using a &lt;CODE&gt;PROC SQL&lt;/CODE&gt; approach or &lt;CODE&gt;DATA step&lt;/CODE&gt; in SAS by &lt;STRONG&gt;grouping by patient&lt;/STRONG&gt; and then &lt;STRONG&gt;accumulating the drug sequence based on time&lt;/STRONG&gt;. Here's one clean solution using &lt;CODE&gt;PROC SQL&lt;/CODE&gt; that works well for your scenario:&lt;BR /&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select patient,&lt;BR /&gt;catx('',&lt;BR /&gt;/* sort and concatenate the drugs by time for each patient */&lt;BR /&gt;max(case when time=1 then drug end),&lt;BR /&gt;max(case when time=2 then drug end)&lt;BR /&gt;) as group&lt;BR /&gt;from your_table&lt;BR /&gt;group by patient;&lt;BR /&gt;quit;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Jul 2025 20:48:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/971502#M377351</guid>
      <dc:creator>ArdigenSupport</dc:creator>
      <dc:date>2025-07-25T20:48:39Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/971504#M377352</link>
      <description>&lt;P&gt;You're looking to create a new variable, &lt;CODE&gt;group&lt;/CODE&gt;, that reflects the drug sequence for each patient based on the &lt;CODE&gt;time&lt;/CODE&gt; variable. To do this, we need to sort the data by &lt;CODE&gt;patient&lt;/CODE&gt; and &lt;CODE&gt;time&lt;/CODE&gt;, then concatenate the &lt;CODE&gt;drug&lt;/CODE&gt; values for each patient in the correct order.&lt;/P&gt;&lt;P&gt;Here’s a solution that achieves what you want using a &lt;CODE&gt;DATA step&lt;/CODE&gt;:&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;input patient time drug $ group $;&lt;BR /&gt;;&lt;BR /&gt;1 1 A AB&lt;BR /&gt;1 2 B AB&lt;BR /&gt;2 1 B BA&lt;BR /&gt;2 2 A BA&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Step 1: Sort the data by patient and time */&lt;BR /&gt;proc sort data=want;&lt;BR /&gt;by patient time;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Step 2: Concatenate the drug values per patient */&lt;BR /&gt;data want_grouped;&lt;BR /&gt;set want;&lt;BR /&gt;by patient;&lt;BR /&gt;&lt;BR /&gt;retain group_string;&lt;BR /&gt;&lt;BR /&gt;/* Accumulate drug values for each patient */&lt;BR /&gt;if first.patient then group_string = ''; /* Reset at start of new patient */&lt;BR /&gt;group_string = ('', group_string, drug); /* Append drug to the group string */&lt;BR /&gt;&lt;BR /&gt;/* Output once all records for a patient are accumulated */&lt;BR /&gt;if last.patient then do;&lt;BR /&gt;group = group_string;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;&lt;BR /&gt;drop group_string;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc print data=want_grouped;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Jul 2025 20:55:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/971504#M377352</guid>
      <dc:creator>ArdigenSupport</dc:creator>
      <dc:date>2025-07-25T20:55:02Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/971755#M377386</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/235176"&gt;@pink_poodle&lt;/a&gt;&amp;nbsp;, would a simple proc sql step solve your question? The code and results are as follows.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
	input patient time drug $ group $;
	datalines;
1 1 A AB
1 2 B AB
2 1 B BA
2 2 A BA
;
run;
proc sql;
select patient, time,drug,
       cat('patient',patient,
           ' belongs to group ',
            '"',compress(group),'"') as group
   from want;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_0-1753955193451.png" style="width: 999px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108657i641E4EDB5F1A96B1/image-size/large?v=v2&amp;amp;px=999" role="button" title="dxiao2017_0-1753955193451.png" alt="dxiao2017_0-1753955193451.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
	input patient time drug $ group $;
	datalines;
1 1 A ABB
1 2 B ABB
1 3 B ABB
2 1 B BA
2 2 A BA
;
run;
proc sql;
select patient, time,drug,
       cat('patient',patient,
           ' belongs to group ',
            '"',compress(group),'"') as group
   from want;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_1-1753955267791.png" style="width: 999px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108658iAFD00167778C1938/image-size/large?v=v2&amp;amp;px=999" role="button" title="dxiao2017_1-1753955267791.png" alt="dxiao2017_1-1753955267791.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 31 Jul 2025 09:48:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/971755#M377386</guid>
      <dc:creator>dxiao2017</dc:creator>
      <dc:date>2025-07-31T09:48:44Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972108#M377451</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/235176"&gt;@pink_poodle&lt;/a&gt;&amp;nbsp;, I did not understand your question correctly in my previous thread. Here is the correct steps: (1) use &lt;EM&gt;lag()&lt;/EM&gt; function and&lt;EM&gt; cat()&lt;/EM&gt; function to create the &lt;EM&gt;group column&lt;/EM&gt;, (2) use &lt;EM&gt;proc sql&lt;/EM&gt; to produce &lt;EM&gt;correspondence patient and group&lt;/EM&gt; table, and (3) use &lt;EM&gt;sql join&lt;/EM&gt; to produce final table which fill in the correspondence group for each patient. The code and result tables are as follows.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My solution looks take much more steps than&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;'s solution (that you pick as the solution for the question), but I think that solution consumes a lot difficult thinking and the logic behind the code is very difficult to follow. My solution looks take more steps, but the thinking behind it is very simple. What do you think? Please kindly let me know if my code answer your question, &lt;span class="lia-unicode-emoji" title=":grinning_face:"&gt;😀&lt;/span&gt;thanks!&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have1;
	input patient time drug $;
	datalines;
1 1 A
1 2 B
2 1 B
2 2 A
;
run;
proc print data=have1;run;
data want1;
   set have1;
   by patient;
   drugprev1=lag1(drug);
   if first.patient then drugprev1=' ';
   if last.patient then group=cat(compress(drugprev1),
                                  compress(drug));
run;
proc print data=want1;run;
proc sql;
create table patientgrp as
select distinct patient,group
   from want1
   where group is not null;
select * from patientgrp;
quit;
proc sql;
create table wantfinal as
select w.patient,w.time,pg.group
   from want1 as w left join
        patientgrp as pg
   on w.patient=pg.patient;
select * from wantfinal;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_0-1754399488232.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108805i42E2EE125C1B6CA6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_0-1754399488232.png" alt="dxiao2017_0-1754399488232.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_2-1754399557013.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108807i172D720ED4BC1E8A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_2-1754399557013.png" alt="dxiao2017_2-1754399557013.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Aug 2025 13:19:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972108#M377451</guid>
      <dc:creator>dxiao2017</dc:creator>
      <dc:date>2025-08-05T13:19:02Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972330#M377467</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/235176"&gt;@pink_poodle&lt;/a&gt;&amp;nbsp;, after tried many times using &lt;EM&gt;if first.&lt;/EM&gt; and &lt;EM&gt;retain&lt;/EM&gt; etc. techniques and failed, I suddenly realized that this is a very simple problem about &lt;EM&gt;proc transpose&lt;/EM&gt;, the code is as simple as follows :&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	input patient time drug $;
	datalines;
1 1 A
1 2 B
1 3 B
2 1 B
2 2 A
;
run;
proc print data=have;run;
proc transpose data=have out=want;
   by patient;
   id time;
   var drug;
run;
proc print data=want;run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_1-1754657308369.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108914i593B89315453D0A1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_1-1754657308369.png" alt="dxiao2017_1-1754657308369.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;And then you can use &lt;EM&gt;cat()&lt;/EM&gt; function to put column 1,2,3 together to produce the patient group column of this typical cross over design. The conclusion is: &lt;EM&gt;proc transpose&lt;/EM&gt; is the simple and efficient solution.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Aug 2025 12:52:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972330#M377467</guid>
      <dc:creator>dxiao2017</dc:creator>
      <dc:date>2025-08-08T12:52:34Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972335#M377468</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/235176"&gt;@pink_poodle&lt;/a&gt;&amp;nbsp;, the complete steps are as follows (using proc transpose to produce the group column):&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	input patient time drug $;
	datalines;
1 1 A
1 2 B
1 3 B
2 1 B
2 2 A
;
run;
proc print data=have;run;
data have1;
   set have;
   timechar=cat('t',put(time,1.));
run;
proc print data=have1;run;
proc transpose data=have1 out=want;
   by patient;
   id timechar;
   var drug;
run;
proc print data=want;run;
data want1;
   set want;
   group=compress(cat(t1,t2,t3));
run;
proc print data=want1;run;
proc sql;
select h.*,
       w1.group
   from have as h left join
        want1 w1
   on h.patient=w1.patient;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_0-1754659476413.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108916iE22B8AC4C0F7766C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_0-1754659476413.png" alt="dxiao2017_0-1754659476413.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_1-1754659535104.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108917iD75A26D281DE51B0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="dxiao2017_1-1754659535104.png" alt="dxiao2017_1-1754659535104.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Aug 2025 13:26:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972335#M377468</guid>
      <dc:creator>dxiao2017</dc:creator>
      <dc:date>2025-08-08T13:26:17Z</dc:date>
    </item>
    <item>
      <title>Re: Patient drug sequence groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972345#M377470</link>
      <description>&lt;P&gt;The last table somehow changed the order of the time column. So &lt;EM&gt;order by&lt;/EM&gt; should be used here:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
select h.*,
       w1.group
   from have as h left join
        want1 w1
   on h.patient=w1.patient
   order by h.patient,h.time;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dxiao2017_0-1754661706351.png" style="width: 999px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/108923iE6F8A8C4FBA84644/image-size/large?v=v2&amp;amp;px=999" role="button" title="dxiao2017_0-1754661706351.png" alt="dxiao2017_0-1754661706351.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Aug 2025 14:02:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Patient-drug-sequence-groups/m-p/972345#M377470</guid>
      <dc:creator>dxiao2017</dc:creator>
      <dc:date>2025-08-08T14:02:34Z</dc:date>
    </item>
  </channel>
</rss>

