[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