Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- SAS Programming
- /
- SAS Procedures
- /
- correlations

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

02-13-2013 05:18 PM

I have a correlation matrix

Corrout =

X Z

X 1 0.2

Z 0.4 1

I would like to compute the mean of this correlation matrix excluding the diagonal terms so for example in this simple case it is = 0.3

The column/rownames X and Z are not fixed you can have any number of columns and any number of rows and they can be called anything.

I am not sure how to do this in SAs

Thanks for your help!

Accepted Solutions

Solution

02-13-2013
08:56 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

02-13-2013 08:56 PM

Assuming your matrix is in a dataset where rows are identified with labels corresponding to variable names :

**data matrix;****input label $ X Z;****datalines;****X 1 0.2****Z 0.4 1****;**

**proc transpose data=matrix out=list;****by label notsorted;****run;**

**proc sql;****select mean(COL1) as meanCorr **

**from list where _name_ ne label;****quit;**

PG

PG

All Replies

Solution

02-13-2013
08:56 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

02-13-2013 08:56 PM

Assuming your matrix is in a dataset where rows are identified with labels corresponding to variable names :

**data matrix;****input label $ X Z;****datalines;****X 1 0.2****Z 0.4 1****;**

**proc transpose data=matrix out=list;****by label notsorted;****run;**

**proc sql;****select mean(COL1) as meanCorr **

**from list where _name_ ne label;****quit;**

PG

PG