- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi community,
I am trying to examine correlation between two variables by group, and there are over 100 groups. What would be a quick and efficient to do that rather than running corr/reg group by group?
For example, I have variables group, var1 and var2 in data "have". There are over 100 groups (1-150), and each group has around 50 observations. I need to get correlation between var1 and var2 by group. My dumb way is:
proc corr data=work.have;
var var1 var2;
where group=1;
run;
Thank you all.
Lizi
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
proc corr data=work.have;
var var1 var2;
BY GROUP;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I guess my question should be: is it possible to format the correlation coefficient result as below:
Group | corr_coeff |
1 | corr1 |
2 | corr2 |
3 | corr3 |
....
up to as many groups as I have.
Thanks again!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
If you use BY group processing, then adding an ODS output statement should accomplish what you need:
proc corr data=work.have;
var var1 var2;
BY GROUP;
ODS OUTPUT PearsonCorr=PearsonCorr;
run;
You can then post process the dataset pearsoncorr to contain only what you need.
Steve Denham
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
You guys are AWESOME!
Thank you very much!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content