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

From: Phil Spector <spector_at_stat.berkeley.edu>
Date: Wed, 06 Apr 2011 13:58:14 -0700 (PDT)

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