I'm sure there are better, more elegant ways avoiding the nested loop I'm suggesting - but if it was my problem, here is what I would do (assuming that my understanding of your question is correct):
### separate function for 'doing something' with the data subset do.something <- function( qA, qB ) { # printing the response subsets as a substitute for your "do something" print( qA ) print( qB ) # you could use a list here to organise or return your results } ### vector containing the numbers of the areas areas <- unique( yrData$Area ) ### extract question headers questions <- colnames( yrData )[ !colnames( yrData ) %in% c( "Area", "Facility" ) ] ### loop through your Area for( i in areas ) { # subset per Area yrSubData <- yrData[ yrData$Area == i, ] # vector containing the Facilities in that Area facilities <- yrSubData$Facility # loop through your Facilities for( j in facilities ) { # get subsets A <- yrSubData[ yrSubData$Facility != j, ] B <- yrSubData # for each combination of subsets, loop through the questions for( q in questions ) { do.something( A[ q ], B[ q ] ) } } } Output: Q1 2 3 3 1 Q1 1 2 2 3 3 1 Q1 1 2 3 1 Q1 1 2 2 3 3 1 Q1 1 2 2 3 Q1 1 2 2 3 3 1 Q1 5 5 6 2 Q1 4 4 5 5 6 2 Q1 4 4 6 2 Q1 4 4 5 5 6 2 Q1 4 4 5 5 Q1 4 4 5 5 6 2 which is what I think should satisfy your need as a first step. Rgds, Rainer On Wednesday 14 August 2013 07:20:24 Derickson, Ryan, VHACIN wrote: > Hello all, > > I've tried to solve this for weeks and posted to other forums with > little success- I'd appreciate any help from anyone. > > I have survey data grouped by facility and area (area is a collection of > facilities). Questions are q1-q10. > > For each facility, I need to subset each item into the facility's > responses, and the facility's area responses excluding the facility. > This might illustrate it better: > > Area Facility Q1... Q10 > 1 1 2 > 1 2 3 > 1 3 1 > 2 4 4 > 2 5 5 > 2 6 2 > > A<- Select Q1 for all Area=1 and Facility!=1; B<- Select Q1 for all > Facility=1; <do something with A and B> > A<- Select Q1 for all Area=1 and Facility!=2; B<- Select Q1 for all > Facility=2; <do something with A and B> > A<- Select Q1 for all Area=1 and Facility!=3; B<- Select Q1 for all > Facility=3; <do something with A and B> > ... > A<- Select Q10 for all Area=2 and Facility!=6; B<- Select Q10 for all > Facility=6; <do something with A and B> > > I know how to write the code to manually pull each subset, but I have a > lot of facilities and areas that get renamed from year to year so I need > to "vectorize" my code so each subset doesn't have to be explicitly > called by area or facility name. > > Again, I would be incredibly appreciative of any help. I'm at a > dead-end. > > > Ryan > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.