[R] Need a more efficient way to implement this type of logic in R

Phil Spector spector at stat.berkeley.edu
Wed Apr 6 22:58:14 CEST 2011


Walter -
    Since your codes represent numbers, you could use something like
this:

chk = as.numeric((hh.sub$HHFAMINC)
hh.sub$CS_FAMINC = cut(chk,c(-10,0,5,10,15,17,18),labels=c(0,1:5))

 					- Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu



On Wed, 6 Apr 2011, Walter Anderson wrote:

> 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
> }
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list