<?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: create pairwise combinations from longitudinal dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62651#M13639</link>
    <description>[pre]&lt;BR /&gt;
data temp;&lt;BR /&gt;
input id gender $ time y;&lt;BR /&gt;
datalines;&lt;BR /&gt;
1 0 1 0.2&lt;BR /&gt;
1 0 2 1.4&lt;BR /&gt;
1 0 3 0.9&lt;BR /&gt;
2 1 1 2.3&lt;BR /&gt;
2 1 2 7.8&lt;BR /&gt;
2 1 3 0.1&lt;BR /&gt;
2 1 4 1.7&lt;BR /&gt;
run;&lt;BR /&gt;
proc sort data=temp;&lt;BR /&gt;
 by id time;&lt;BR /&gt;
run;&lt;BR /&gt;
data result;&lt;BR /&gt;
 set temp;&lt;BR /&gt;
 by id;&lt;BR /&gt;
 length str_time str_y $ 100;&lt;BR /&gt;
 retain str_time str_y;&lt;BR /&gt;
 if first.id then do; &lt;BR /&gt;
                   call missing(str_time,str_y);&lt;BR /&gt;
				   id_count=0;&lt;BR /&gt;
				   end;&lt;BR /&gt;
 id_count+1;&lt;BR /&gt;
 str_time=catx(',',str_time,time);&lt;BR /&gt;
 str_y=catx(',',str_y,y);&lt;BR /&gt;
 if last.id then do;&lt;BR /&gt;
                         do i=1 to id_count;&lt;BR /&gt;
			              do j=i+1 to id_count;&lt;BR /&gt;
						     pairs=cats( '(' ,scan(str_time,i,','), ',' ,scan(str_time,j,','), ')' );&lt;BR /&gt;
							 y_s=scan(str_y,i,','); y_t=scan(str_y,j,',');&lt;BR /&gt;
							 gender_s=gender;gender_t=gender;&lt;BR /&gt;
							 output;&lt;BR /&gt;
							end;&lt;BR /&gt;
                          end;&lt;BR /&gt;
                 end;&lt;BR /&gt;
 keep id pairs gender_s gender_t y_s y_t;&lt;BR /&gt;
run;    &lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
Ksharp&lt;BR /&gt;
&lt;BR /&gt;
Message was edited by: Ksharp</description>
    <pubDate>Mon, 17 Jan 2011 06:51:30 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2011-01-17T06:51:30Z</dc:date>
    <item>
      <title>create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62648#M13636</link>
      <description>Hi,&lt;BR /&gt;
&lt;BR /&gt;
I have a longitudinal dataset (hypothetical) as below with 4 variables (id, gender, time and y); &lt;BR /&gt;
&lt;BR /&gt;
id gender time y&lt;BR /&gt;
1 0 1 0.2&lt;BR /&gt;
1 0 2 1.4&lt;BR /&gt;
1 0 3 0.9&lt;BR /&gt;
2 1 1 2.3&lt;BR /&gt;
2 1 2 7.8&lt;BR /&gt;
2 1 3 0.1&lt;BR /&gt;
2 1 4 1.7; &lt;BR /&gt;
&lt;BR /&gt;
I would like to EFFICIENTLY (because the datasets can get very large) create pairwise combinations, in SAS/IML or using a datastep, within 'id' for the variables 'gender' and 'y' (number of variables can vary) so that I have a final dataset with variables 'id', 'pair' (which is the combination based on the variable time. E.g., id=1 has time=(1,2,3), then the possible pair combinations (s,t) are 1,2; 1,3; and 2,3), 'gender_s', 'gender_t', 'y_s' and 'y_t'. The variables 'gender_s', 'gender_t', 'y_s' and 'y_t' are formed by simply copying the value for 'gender' and 'y' at the s and t time points. The final dataset would look as&lt;BR /&gt;
follows: &lt;BR /&gt;
&lt;BR /&gt;
id pair(s,t) gender_s gender_t y_s y_t;&lt;BR /&gt;
1 (1,2) 0 0 0.2 1.4&lt;BR /&gt;
1 (1,3) 0 0 0.2 0.9&lt;BR /&gt;
1 (2,3) 0 0 1.4 0.9&lt;BR /&gt;
2 (1,2) 1 1 2.3 7.8&lt;BR /&gt;
2 (1,3) 1 1 2.3 0.1&lt;BR /&gt;
2 (1,4) 1 1 2.3 1.7&lt;BR /&gt;
2 (2,3) 1 1 7.8 0.1&lt;BR /&gt;
2 (2,4) 1 1 7.8 1.7&lt;BR /&gt;
2 (3,4) 1 1 0.1 1.7 &lt;BR /&gt;
&lt;BR /&gt;
Kindly advise on how best (in terms of efficiency) I can program this?&lt;BR /&gt;
Many thanks in advance</description>
      <pubDate>Fri, 14 Jan 2011 15:04:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62648#M13636</guid>
      <dc:creator>KGeorge</dc:creator>
      <dc:date>2011-01-14T15:04:27Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62649#M13637</link>
      <description>In terms of &lt;I&gt;coding&lt;/I&gt; efficiency, proc sql seems hard to beat for this one. Below assumes that there is no duplicated time within an id.&lt;BR /&gt;&lt;BR /&gt;
&lt;BR /&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;/*&amp;nbsp;test&amp;nbsp;data&amp;nbsp;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="color:#000080;font-family:Courier New;font-size:10pt;"&gt;data&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;one;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;id&amp;nbsp;time&amp;nbsp;x&amp;nbsp;$&amp;nbsp;y&amp;nbsp;$;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;cards&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;1&amp;nbsp;a&amp;nbsp;b&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;2&amp;nbsp;c&amp;nbsp;d&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;3&amp;nbsp;e&amp;nbsp;f&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;1&amp;nbsp;g&amp;nbsp;h&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;2&amp;nbsp;i&amp;nbsp;j&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;3&amp;nbsp;k&amp;nbsp;l&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;4&amp;nbsp;m&amp;nbsp;n&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="color:#000080;font-family:Courier New;font-size:10pt;"&gt;run&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&amp;nbsp;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;/*&amp;nbsp;create&amp;nbsp;time&amp;nbsp;pairs&amp;nbsp;data&amp;nbsp;within&amp;nbsp;id&amp;nbsp;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="color:#000080;font-family:Courier New;font-size:10pt;"&gt;proc&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="color:#000080;font-family:Courier New;font-size:10pt;"&gt;sql&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;select&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;d1.id,&amp;nbsp;d1.time&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;t1,&amp;nbsp;d2.time&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;t2&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&amp;nbsp;d1.x&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;x1,&amp;nbsp;d1.y&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;y1&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,&amp;nbsp;d2.x&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;x2,&amp;nbsp;d2.y&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;y2&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;from&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;one&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;d1,&amp;nbsp;one&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;as&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;d2&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;where&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;d1.id&amp;nbsp;=&amp;nbsp;d2.id&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;and&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;d1.time&amp;nbsp;&amp;lt;&amp;nbsp;d2.time&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;order&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#0000FF;font-family:Courier New;font-size:10pt;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;id,&amp;nbsp;t1,&amp;nbsp;t2;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="color:#000080;font-family:Courier New;font-size:10pt;"&gt;quit&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;/*&amp;nbsp;on&amp;nbsp;lst&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;&amp;nbsp;t1&amp;nbsp;&amp;nbsp;t2&amp;nbsp;&amp;nbsp;x1&amp;nbsp;&amp;nbsp;y1&amp;nbsp;&amp;nbsp;x2&amp;nbsp;&amp;nbsp;y2&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;&amp;nbsp;&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;d&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;&amp;nbsp;&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;f&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;d&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;f&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;g&amp;nbsp;&amp;nbsp;&amp;nbsp;h&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;&amp;nbsp;&amp;nbsp;j&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;g&amp;nbsp;&amp;nbsp;&amp;nbsp;h&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;&amp;nbsp;&amp;nbsp;l&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;g&amp;nbsp;&amp;nbsp;&amp;nbsp;h&amp;nbsp;&amp;nbsp;&amp;nbsp;m&amp;nbsp;&amp;nbsp;&amp;nbsp;n&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;&amp;nbsp;&amp;nbsp;j&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;&amp;nbsp;&amp;nbsp;l&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;&amp;nbsp;&amp;nbsp;j&amp;nbsp;&amp;nbsp;&amp;nbsp;m&amp;nbsp;&amp;nbsp;&amp;nbsp;n&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;k&amp;nbsp;&amp;nbsp;&amp;nbsp;l&amp;nbsp;&amp;nbsp;&amp;nbsp;m&amp;nbsp;&amp;nbsp;&amp;nbsp;n&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;
&lt;P style="padding:0"&gt;&lt;SPAN style="color:#008000;font-family:Courier New;font-size:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Jan 2011 15:36:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62649#M13637</guid>
      <dc:creator>chang_y_chung_hotmail_com</dc:creator>
      <dc:date>2011-01-14T15:36:49Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62650#M13638</link>
      <description>sounds like SQL cartesian&lt;BR /&gt;
what I call "self join" (is that reflex join?)&lt;BR /&gt;
select s.ID&lt;BR /&gt;
, s.time as s_time&lt;BR /&gt;
, t.time as t_time&lt;BR /&gt;
, s.gender as gender_s&lt;BR /&gt;
, t.gender as gender_t, &lt;BR /&gt;
  &lt;BR /&gt;
etc&lt;BR /&gt;
  &lt;BR /&gt;
 from &lt;BR /&gt;
longi_data S , &lt;BR /&gt;
longi_data T&lt;BR /&gt;
where &lt;BR /&gt;
s.id eq t.id and &lt;BR /&gt;
s.time LT t.time /* upper triangle of cartesian only */&lt;BR /&gt;
 &lt;BR /&gt;
 but I'm cautious about efficiency

posting overlapping a better one {ignore mine}    &lt;BR /&gt;
Message was edited by: Peter.C</description>
      <pubDate>Fri, 14 Jan 2011 17:35:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62650#M13638</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2011-01-14T17:35:59Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62651#M13639</link>
      <description>[pre]&lt;BR /&gt;
data temp;&lt;BR /&gt;
input id gender $ time y;&lt;BR /&gt;
datalines;&lt;BR /&gt;
1 0 1 0.2&lt;BR /&gt;
1 0 2 1.4&lt;BR /&gt;
1 0 3 0.9&lt;BR /&gt;
2 1 1 2.3&lt;BR /&gt;
2 1 2 7.8&lt;BR /&gt;
2 1 3 0.1&lt;BR /&gt;
2 1 4 1.7&lt;BR /&gt;
run;&lt;BR /&gt;
proc sort data=temp;&lt;BR /&gt;
 by id time;&lt;BR /&gt;
run;&lt;BR /&gt;
data result;&lt;BR /&gt;
 set temp;&lt;BR /&gt;
 by id;&lt;BR /&gt;
 length str_time str_y $ 100;&lt;BR /&gt;
 retain str_time str_y;&lt;BR /&gt;
 if first.id then do; &lt;BR /&gt;
                   call missing(str_time,str_y);&lt;BR /&gt;
				   id_count=0;&lt;BR /&gt;
				   end;&lt;BR /&gt;
 id_count+1;&lt;BR /&gt;
 str_time=catx(',',str_time,time);&lt;BR /&gt;
 str_y=catx(',',str_y,y);&lt;BR /&gt;
 if last.id then do;&lt;BR /&gt;
                         do i=1 to id_count;&lt;BR /&gt;
			              do j=i+1 to id_count;&lt;BR /&gt;
						     pairs=cats( '(' ,scan(str_time,i,','), ',' ,scan(str_time,j,','), ')' );&lt;BR /&gt;
							 y_s=scan(str_y,i,','); y_t=scan(str_y,j,',');&lt;BR /&gt;
							 gender_s=gender;gender_t=gender;&lt;BR /&gt;
							 output;&lt;BR /&gt;
							end;&lt;BR /&gt;
                          end;&lt;BR /&gt;
                 end;&lt;BR /&gt;
 keep id pairs gender_s gender_t y_s y_t;&lt;BR /&gt;
run;    &lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
Ksharp&lt;BR /&gt;
&lt;BR /&gt;
Message was edited by: Ksharp</description>
      <pubDate>Mon, 17 Jan 2011 06:51:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62651#M13639</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-01-17T06:51:30Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62652#M13640</link>
      <description>as a side-issue, Ksharp, &lt;BR /&gt;
please would you change the option in your SAS code editor which will replace tab-characters with spaces.&lt;BR /&gt;
Then the code you paste into forum replies might look better on a browser screen (like mine)&lt;BR /&gt;
 &lt;BR /&gt;
peter</description>
      <pubDate>Mon, 17 Jan 2011 17:30:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62652#M13640</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2011-01-17T17:30:22Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62653#M13641</link>
      <description>Hi.&lt;BR /&gt;
Peter.I copy these code from my SAS program editor directly.&lt;BR /&gt;
These code looks fine in my SAS,But I do not know why this forum will  distort it.&lt;BR /&gt;
&lt;BR /&gt;
Thanks Peter.C&lt;BR /&gt;
Ksharp

Message was edited by: Ksharp</description>
      <pubDate>Tue, 18 Jan 2011 02:00:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62653#M13641</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-01-18T02:00:22Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62654#M13642</link>
      <description>A TAB character does not necessarily move the same number of spaces in the Enhanced Editor as it will in the forum or, for that matter in my Enhanced Editor.  So what i do is in SAS DM with the Enhanced Editor window active.&lt;BR /&gt;
tools&amp;gt;options&amp;gt;Enhanced Editor&amp;gt;general&lt;BR /&gt;
check insert spaces for tabs and replace tabs with spaces</description>
      <pubDate>Tue, 18 Jan 2011 02:45:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62654#M13642</guid>
      <dc:creator>ArtC</dc:creator>
      <dc:date>2011-01-18T02:45:58Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62655#M13643</link>
      <description>Thanks. ArtC.</description>
      <pubDate>Tue, 18 Jan 2011 03:29:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62655#M13643</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-01-18T03:29:32Z</dc:date>
    </item>
    <item>
      <title>Re: create pairwise combinations from longitudinal dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62656#M13644</link>
      <description>I think it again.There is no need to sort dataset.If dataset just like it.&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
data temp;&lt;BR /&gt;
input id gender  time y;&lt;BR /&gt;
datalines;&lt;BR /&gt;
1 0 1 0.2&lt;BR /&gt;
1 0 2 1.4&lt;BR /&gt;
1 0 3 0.9&lt;BR /&gt;
2 1 1 2.3&lt;BR /&gt;
2 1 2 7.8&lt;BR /&gt;
2 1 3 0.1&lt;BR /&gt;
2 1 4 1.7&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
data result;&lt;BR /&gt;
 set temp end=last;&lt;BR /&gt;
 length str_time str_y $ 100;&lt;BR /&gt;
 retain str_time str_y _gender _id ;&lt;BR /&gt;
 if id ne lag(id) and _n_ ge 2 then do;&lt;BR /&gt;
                            do i=1 to id_count;&lt;BR /&gt;
			                  do j=i+1 to id_count;&lt;BR /&gt;
						       pairs=cats( '(' ,scan(str_time,i,','), ',' ,scan(str_time,j,','), ')' );&lt;BR /&gt;
							   y_s=scan(str_y,i,','); y_t=scan(str_y,j,',');&lt;BR /&gt;
							   id=_id;gender_s=_gender;gender_t=_gender;&lt;BR /&gt;
							   output;&lt;BR /&gt;
							  end;&lt;BR /&gt;
                            end;&lt;BR /&gt;
                         call missing(str_time,str_y);&lt;BR /&gt;
				         id_count=0;&lt;BR /&gt;
                       end;&lt;BR /&gt;
 id_count+1;&lt;BR /&gt;
 str_time=catx(',',str_time,time);&lt;BR /&gt;
 str_y=catx(',',str_y,y);&lt;BR /&gt;
 _id=id;&lt;BR /&gt;
 _gender=gender;&lt;BR /&gt;
 if last then do;&lt;BR /&gt;
                         do i=1 to id_count;&lt;BR /&gt;
			              do j=i+1 to id_count;&lt;BR /&gt;
						     pairs=cats( '(' ,scan(str_time,i,','), ',' ,scan(str_time,j,','), ')' );&lt;BR /&gt;
							 y_s=scan(str_y,i,','); y_t=scan(str_y,j,',');&lt;BR /&gt;
							 id=_id;gender_s=_gender;gender_t=_gender;&lt;BR /&gt;
							 output;&lt;BR /&gt;
							end;&lt;BR /&gt;
                          end;&lt;BR /&gt;
                 end;&lt;BR /&gt;
 keep _id pairs gender_s gender_t y_s y_t;&lt;BR /&gt;
run;    &lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
Ksharp</description>
      <pubDate>Thu, 20 Jan 2011 05:46:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/create-pairwise-combinations-from-longitudinal-dataset/m-p/62656#M13644</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-01-20T05:46:19Z</dc:date>
    </item>
  </channel>
</rss>

