[R] Recode factors
Henrique Dallazuanna
wwwhsd at gmail.com
Thu Mar 27 18:50:22 CET 2008
If I understand, you can try this:
levels(x)[is.na(as.numeric(levels(x)))] <- 0
On 27/03/2008, Doran, Harold <HDoran at air.org> wrote:
> I know this comes up, but I didn't see my exact issue in the archives. I
> have variables in a dataframe that need to be recoded. Here is what I'm
> dealing with
>
> I have a factor called aa
>
> > class(aa)
> [1] "factor"
> > table(aa)
> aa
> * 0 1 2 3 A B C D L N T
> 0 0 1908 725 2089 0 0 67 0 0 2 1 6
>
> I need to recode everything that is not a numeric value into a 0. So,
> for example
>
> > mm <- ifelse(aa == 'B', 0, aa)
> > table(mm)
> mm
> 0 3 4 5 11 12 13
> 67 1908 725 2089 2 1 6
>
> The recoding works, but the values are no longer what they were
> previously. For example, what was a '1' is now a '4' etc. Is there a way
> to recode factors and also keep the values the same as they were before?
> That is, a '1' would remain a '1' after the recode?
>
> After the recoding, I need to convert to a numeric variable. I can do
> this as
>
> mm <- as.numeric(as.character(aa))
>
> Harold
>
>
> > sessionInfo()
> R version 2.6.2 (2008-02-08)
> i386-pc-mingw32
>
> locale:
> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
> States.1252;LC_MONETARY=English_United
> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
>
> other attached packages:
> [1] gdata_2.4.0
>
> loaded via a namespace (and not attached):
> [1] gtools_2.4.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.
>
--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O
More information about the R-help
mailing list