Message-ID: <OF43355F91.73EBEF31-ONC125786B.00220D59-C125786B.0023383A@precheza.cz>
Date: 2011-04-07T06:24:18Z
From: PIKAL Petr
Subject: Odp: Need a more efficient way to implement this type of logic in R
In-Reply-To: <4D9CC6D5.9060709@gmail.com>
Hi
r-help-bounces at 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 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.