options pagesize=70 linesize=55; data a; set splitcov; /* Create a Whole Plot Covariate */ proc sort data=a; by wp; proc means data=a noprint; by wp; var spcov; output out=b mean=wpcov; /* Append the Whole Plot Covariate to the data */ data c; merge a b; by wp; run; /* Create a Whole Plot Factor Covariate */ proc sort data=a; by wpf; proc means data=a noprint; by wpf; var spcov; output out=d mean=wpfcov; run; /* Append the WP Factor Cov to the data as well */ proc sort data=c; by wpf; data e; merge d c; by wpf; /* Create a Split Plot Factor Covariate */ data f; set e; spfcov=spcov-wpcov; run; proc print; run; /* Traditional ANOVA */ proc glm data=f; class Block SPF WPF; model response=Block WPF WPF*Block SPF WPF*SPF; random Block/test; test h=WPF e=wpf*block; run; /* Yandell ANOVA */ proc glm data=f; class WP SPF WPF; model response=WPF WP(WPF) SPF WPF*SPF; random WP(WPF)/test; run; /* Yandell ANOVA with Whole Plot covariates */ proc glm data=f; class SPF WPF WP; model response=wpcov wpf wp(wpf) spf wpf*spf; /* This next statement won't work */ *random wp(wpf)/test; test h=wpf e=wp(wpf); test h=wpcov e=wp(wpf)/htype=1 etype=1; run; /* Yandell ANOVA with Split Plot covariates */ proc glm data=f; class SPF WPF WP; model response=wpcov wpf wp(wpf) spfcov spf wpf*spf; test h=wpf e=wp(wpf); test h=wpcov e=wp(wpf)/htype=1 etype=1; run;