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
proc corr data=work.have;
var var1 var2;
BY GROUP;
run;
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!
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
You guys are AWESOME!
Thank you very much!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.