From: Gabor Grothendieck <ggrothendieck_at_myway.com>

Date: Wed 02 Mar 2005 - 11:17:02 EST

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Mar 02 11:28:45 2005

Date: Wed 02 Mar 2005 - 11:17:02 EST

Chris Bergstresser <chris <at> subtlety.com> writes:

*:
*

: Date: Tue, 01 Mar 2005 16:45:36 -0600

*: From: Chris Bergstresser <chris@subtlety.com>
**: To: <r-help@stat.math.ethz.ch>
**: Subject: [R] How to convert a factor to a numeric?
**:
**:
**: Hi all --
**:
**: I've got two columns, both of which correspond to three factor
**: levels (e.g., column1 is "a", "b", or "c"; column2 is "x", "y", or "z").
**: I'd like to generate a third column, consisting on whether the two
**: factors are correctly aligned for a given case (in this example, "a"
**: corresponds to "x", "b" to "y", and "c" to "z"). For example:
**:
**: a x TRUE
**: a y FALSE
**: b y TRUE
**: c z TRUE
**: b x FALSE
**:
**: Several questions:
**:
**: The easiest way seemed to me to be comparing the numeric values
**: across columns, but the encodings are (a=1, b=2, c=3) and (x=1, y=3,
**: z=2). Is there a way to change the underlying value representing each
**: factor, so I could just run an equality on them?
*

If f1 and f2 are the two factors:

as.numeric(f1) == as.numeric(factor(as.character(f2)))

: Is there a simple way to check for correspondence without recoding

*: the factors?
*

I am not sure I would recommend this but it could be done like this:

as.numeric(f1) == ifelse(f2=="x", 1, 5-as.numeric(f2))

: In the help for factor(), it says "In particular, 'as.numeric'

*: applied to a factor is meaningless, and may happen by implicit coercion.
**: To "revert" a factor 'f' to its original numeric values,
**: 'as.numeric(levels(f))[f]' is recommended and slightly more efficient
**: than 'as.numeric(as.character(f))'." However, I get the following
**: results. What's going on?
*

I suspect they were thinking of the case where the levels themselves are of class numeric as in factor(c(10,10,11,11,12,12)) since it does not seem to be correct otherwise.

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Mar 02 11:28:45 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:30:39 EST
*