Hi r-help-boun...@r-project.org napsal dne 06.04.2011 22:02:29:
> I have cobbled together the following logic. It works but is very > slow. I'm sure that there must be a better r-specific way to implement > this kind of thing, but have been unable to find/understand one. Any > help would be appreciated. > > hh.sub <- households[c("HOUSEID","HHFAMINC")] > for (indx in 1:length(hh.sub$HOUSEID)) { > if ((hh.sub$HHFAMINC[indx] == '01') | (hh.sub$HHFAMINC[indx] == '02') > | (hh.sub$HHFAMINC[indx] == '03') | (hh.sub$HHFAMINC[indx] == '04') | > (hh.sub$HHFAMINC[indx] == '05')) > hh.sub$CS_FAMINC[indx] <- 1 # Less than $25,000 > if ((hh.sub$HHFAMINC[indx] == '06') | (hh.sub$HHFAMINC[indx] == '07') > | (hh.sub$HHFAMINC[indx] == '08') | (hh.sub$HHFAMINC[indx] == '09') | > (hh.sub$HHFAMINC[indx] == '10')) > hh.sub$CS_FAMINC[indx] <- 2 # $25,000 to $50,000 > if ((hh.sub$HHFAMINC[indx] == '11') | (hh.sub$HHFAMINC[indx] == '12') > | (hh.sub$HHFAMINC[indx] == '13') | (hh.sub$HHFAMINC[indx] == '14') | > (hh.sub$HHFAMINC[indx] == '15')) > hh.sub$CS_FAMINC[indx] <- 3 # $50,000 to $75,000 > if ((hh.sub$HHFAMINC[indx] == '16') | (hh.sub$HHFAMINC[indx] == '17')) > hh.sub$CS_FAMINC[indx] <- 4 # $75,000 to $100,000 > if ((hh.sub$HHFAMINC[indx] == '18')) > hh.sub$CS_FAMINC[indx] <- 5 # More than $100,000 > if ((hh.sub$HHFAMINC[indx] == '-7') | (hh.sub$HHFAMINC[indx] == '-8') > | (hh.sub$HHFAMINC[indx] == '-9')) > hh.sub$CS_FAMINC[indx] = 0 > } Take advantage of factors. If hh.sub$HHFAMINC was factor you can recode it by levels(hh.sub$HHFAMINC)<-appropriate vector of new levels with the same length as levels Something like > x<-factor(letters[1:5]) > x [1] a b c d e Levels: a b c d e > levels(x)<-c(1,1,2,2,1) > x [1] 1 1 2 2 1 Levels: 1 2 > Regards Petr > > ______________________________________________ > 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.