<?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 Triangular Symmetric Matrix in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607426#M176592</link>
    <description>Wher is the second link supposed to go to?</description>
    <pubDate>Tue, 26 Nov 2019 16:51:36 GMT</pubDate>
    <dc:creator>hedgddfgd</dc:creator>
    <dc:date>2019-11-26T16:51:36Z</dc:date>
    <item>
      <title>Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607305#M176499</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have a Matrix with bottom left triangular values. The top right triangular values are empty.&lt;/P&gt;&lt;P&gt;How can I make this a symmetrical Matrix and add a Diagonal with Zeros?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used this code to create the bottom left triangular values:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;proc transpose data=city_distance out=work.dchart (drop=_NAME_);
var distance;
by startID;
id endID;
run;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 12:26:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607305#M176499</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T12:26:44Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607308#M176500</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/295097"&gt;@hedgddfgd&lt;/a&gt;&amp;nbsp;Hi and welcome to the SAS Community &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are you able to show us your data?&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 12:33:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607308#M176500</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-11-26T12:33:22Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607317#M176503</link>
      <description>&lt;P&gt;Thank you for your answer.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I attached a Picture of the data. I want a Diagonal above and the empty cells filled with the symmetrical data.&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Unbenannt.JPG" style="width: 600px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/34252i66205291115F855E/image-size/large?v=v2&amp;amp;px=999" role="button" title="Unbenannt.JPG" alt="Unbenannt.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 12:57:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607317#M176503</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T12:57:17Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607322#M176507</link>
      <description>&lt;P&gt;You need post data and output .&lt;/P&gt;
&lt;P&gt;And better post it at IML forum if it is about Matrix problem due to IML refer to Interactive MATRIX Language .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input a b c ;
cards;
1 . .
2 1 .
3 2 1 
;

proc iml;
use have ;
read all var _num_ into x;
close;
x=choose(x=.,0,x);
r=j(1,ncol(x)+1,0);
c=j(nrow(x),1,0);
temp=r//(x||c);
want=temp+t(temp);
create want from want;
append from want;
close;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Nov 2019 13:11:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607322#M176507</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-11-26T13:11:56Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607323#M176508</link>
      <description>&lt;P&gt;Thanks a lot! But how can I Keep the names of the cols?&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 13:15:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607323#M176508</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T13:15:14Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607324#M176509</link>
      <description>And also the startID in col 1</description>
      <pubDate>Tue, 26 Nov 2019 13:17:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607324#M176509</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T13:17:09Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607326#M176511</link>
      <description>&lt;P&gt;If you add&amp;nbsp; a diagonal of 0 , you would get one more variable ,how do you rename it ?&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 13:17:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607326#M176511</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-11-26T13:17:49Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607329#M176514</link>
      <description>&lt;P&gt;OK. I have to leave now. Try this one.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ a b c ;
cards;
a1 1 . .
b2 2 1 .
c3 3 2 1 
;

proc iml;
use have ;
read all var _num_ into x[c=vname r=id];
close; 
x=choose(x=.,0,x);
r=j(1,ncol(x)+1,0);
c=j(nrow(x),1,0);
temp=r//(x||c);
want=temp+t(temp);
id='zero'//id;
vname='zero'||vname	;
create want from want[c=vname r=id];
append from want[r=id];
close;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Nov 2019 13:23:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607329#M176514</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-11-26T13:23:44Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607333#M176518</link>
      <description>&lt;P&gt;If you don't want add&amp;nbsp;&lt;SPAN&gt;a Diagonal with Zeros. Try this one.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I have to leave. Maybe&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13684"&gt;@Rick_SAS&lt;/a&gt;&amp;nbsp; could give you more accurate code .&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ a b c ;
cards;
a1 1 . .
b2 2 1 .
c3 3 2 1 
;

proc iml;
use have ;
read all var _num_ into x[c=vname r=id];
close; 
x=choose(x=.,0,x);
diag=diag(x);
want=x+t(x)-diag;

create want from want[c=vname r=id];
append from want[r=id];
close;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Nov 2019 13:29:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607333#M176518</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-11-26T13:29:51Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607339#M176522</link>
      <description>Thank you so much, that worked!</description>
      <pubDate>Tue, 26 Nov 2019 13:47:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607339#M176522</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T13:47:10Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607340#M176523</link>
      <description>I'll try to learn more about IML.</description>
      <pubDate>Tue, 26 Nov 2019 13:47:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607340#M176523</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T13:47:38Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607352#M176530</link>
      <description>&lt;P&gt;Now I see when I use that the values are shifted and they are not right anymore. How can I fix that? I would need an additional row on top with startID=DE-01001&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 14:44:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607352#M176530</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T14:44:22Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607356#M176533</link>
      <description>&lt;P&gt;My original data now Looks like this:&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Unbenannt (1).JPG" style="width: 600px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/34253i06760B8022A69186/image-size/large?v=v2&amp;amp;px=999" role="button" title="Unbenannt (1).JPG" alt="Unbenannt (1).JPG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 14:49:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607356#M176533</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T14:49:46Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607371#M176547</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/295097"&gt;@hedgddfgd&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just for fun. You can as well do this using only one Data Step. A two dimensional array is used to store the values in row-col order first. Once the Data Set is read and reached the end of file, we simply switch col-row values into row-col values. It is that simple.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
   input id a b c;
datalines;
10 5  .  .
20 7  3  .
30 9  2  5
;
run;

%let rows = 3;

data want;
   array k[&amp;amp;rows,&amp;amp;rows] _temporary_;
   array m[&amp;amp;rows] _temporary_;
   /** Save the cells into a 2-dimensional array **/
   do i = 1 by 1 until(eof);
      set have end = eof;
      m[i] = id;
      array v a -- c;
      do j = 1 to dim(v);
         k[i, j] = v[j];
      end;
   end;
   /** Switch col-row cells into row-col cells **/
   if eof;
   do i = 1 to dim1(k);
      id = m[i];
      do j = 1 to dim2(k);
         if i = j then k[i,j] = 0;
         else k[i,j] = k[j, i];
         v[j] = k[i,j];
      end;
      output;
   end;
drop i j;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The output is:&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="Capture_01.JPG" style="width: 125px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/34254i8DB645B6E22C1AFD/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture_01.JPG" alt="Capture_01.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 15:26:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607371#M176547</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2019-11-26T15:26:49Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607380#M176553</link>
      <description>&lt;P&gt;In SAS/IML, you can use the VECH function to extract the lower triangular portion of the matrix and use the SQRVECH function to create the full matrix. For an example, see &lt;A href="https://blogs.sas.com/content/iml/2012/03/21/creating-symmetric-matrices-two-useful-functions-with-strange-names.html" target="_self"&gt;"Creating symmetric matrices: Two useful functions with strange names."&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If necessary, you can also &lt;A href="https://blogs.sas.com/content/iml/2013/10/21/assign-the-diagonal-elements-of-a-matrix.html" target="_self"&gt;assign the diagonal elements of the matrix.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 17:30:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607380#M176553</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2019-11-26T17:30:34Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607426#M176592</link>
      <description>Wher is the second link supposed to go to?</description>
      <pubDate>Tue, 26 Nov 2019 16:51:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607426#M176592</guid>
      <dc:creator>hedgddfgd</dc:creator>
      <dc:date>2019-11-26T16:51:36Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607442#M176603</link>
      <description>&lt;P&gt;Thanks. Fixed link&lt;/P&gt;</description>
      <pubDate>Tue, 26 Nov 2019 17:31:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607442#M176603</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2019-11-26T17:31:01Z</dc:date>
    </item>
    <item>
      <title>Re: Create Triangular Symmetric Matrix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607619#M176681</link>
      <description>&lt;P&gt;OK. That would be more simple. Check if data is similar with yours.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ a b c d;
cards;
aa . . . .
a1 1 . . .
b2 2 1 . .
c3 3 2 1 .
;

proc iml;
use have ;
read all var _num_ into x[c=vname r=id];
close; 
x=choose(x=.,0,x);
want=x+t(x);

create want from want[c=vname r=id];
append from want[r=id];
close;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 27 Nov 2019 11:24:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-Triangular-Symmetric-Matrix/m-p/607619#M176681</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-11-27T11:24:27Z</dc:date>
    </item>
  </channel>
</rss>

