/****************************************** input parameters: indata - input data set. Outdata - output data (mean and std err.) var - analysis variable on input data set. wt - variable name on input data for full sample weights. Repwt - prefix used in replicate weight names. Replicate weight names must be in the form: repwt01, repwt02, ... repwt45 n - number of replicate weights on input data set. Program creates an output dataset containing the method, the number of replicates, the mean, and the standard error. ********************************************************/ %macro jack2_mean(indata,outdata,var,wt,repwt,n); data rep_mean_junk2; set _null_; run; *create dummy data set*; proc means data=&indata noprint; var &var; weight &wt; output out=meanhat mean=meanhat; run; %do i=1 %to &n; ** cycle through the replicate weights **; %put calculating results for replicate weight &i; proc means data=&indata noprint; var &var; %do; weight &repwt&i; %end; output out=rep_mean_junk mean=mean; run; data rep_mean_junk2; set rep_mean_junk2 rep_mean_junk(in=j); if j then rep=&i; run; %end; data rep_mean_junk2; merge rep_mean_junk2 meanhat; by _type_; mean2=(mean-meanhat)*(mean-meanhat); run; proc means data=rep_mean_junk2 noprint; var mean2; id meanhat; output out=&outdata sum=sum; run; data &outdata; set &outdata(keep=sum meanhat); _METHOD_ = "JK2"; _REPLICATES_=&n; &var._mean = meanhat; &var._std = sqrt(sum);; drop sum meanhat; run; options notes; %mend jack2_mean; %macro jack2_mean(,outdata,var,wt,repwt,n); %jack2_mean(all,calc_mean ,calcium,wt4_day1,r4_d1_,43);