Many thanks for your response. After reading the materials, below is the SAS Code I wrote based on my understanding of the materials. Unfortunately, the SAS program is not working. Any help is appreciated.
Here are the steps that might give a clearer picture. The difference between this and the elegant blog by @Rick is that the blog only considers a dataset, or dropping nth level. But here, one is dropping n_th observation in the b_th level.
1) read in the data
2) sort the data by two variables, (effects and treat)
3)extract the sorted categories
4) obtain row numbers for the first observation in each level (i.e., the two BY variables (effects and treat). Using only one variable will wrongly assume fewer levels)
5) find observations in each level
6) create jackknife samples by dropping n_th observation in the b_th level. (Here is the hard part. The nth observation is dropped from the b_th level. Think about it as each level representing a dataset.)
7) create a dataset that has replicate for each jackknife sample.
Thanks
proc iml; use aa; read all var{effects treat b post} into m; close;
call sort(m,1:2); /*sort by effects and treat*/ c=m[,1:2]; /*done with m: extract sorted categories*/ x=m[,3:4]; /*the renaning sorted data*/
/*obstain row numbers for the first observation in each level*/ b=uniqueby(C,1:2); /*b[i]=begining of i_th category. there are 2 BY variables--effects and treat*/ u=c[b]; /*get unique values (if needed)*/
*s=j(nrow(b),1); /*Allocate vector to hold results*/ b=b//(nrow(c)+1); /*trick: append (n+1) to end of b*/ do i=1 to nrow(b)-1;/*For each level....*/ idx=b[i]:(b[i+1]-1);/*Find observations in level*/ idxn=loc(idx ^=b[u]); /*create jackknife samples: remove i_th observation in b_th category*/
ID=colvec(repeat(T(1:b),1,idxn)); /*create ID number for each jackknife same*/ *Group = j(nrow(ID), 1, 2); Z=ID|||C||X; /*Combine with original data*/ append from Z; /*create dataset Z that contains replicates */ end;
print idx z;
quit;
... View more