Hello,
I have a really trivial question, but I just cannot figure out
a safe and efficient solution:
I have a factor with four levels, and I want to create a new factor
that collapses the four levels down to two levels.
E.g Suppose my factor is x, with levels "A", "B",
"C", "D", and I want
to create a new factor y with levels "P", "Q", such that
when x is
"A" or "B" then y is "P" and when x is
"C" or "D" then y is "Q".
My solution is:
y <- NULL
for (i in 1:length(x))
{
# assuming no missing values or extraneous values in x[]
if ( x[i] == "A" || x[i] == "B") y[i] <-
"P"
else y[i] <- "Q"
}
y <- factor(y)
This is inelegant and also very slow (I have many records).
I'm sure there is an efficient one-liner, but I just cannot see it.
I want to use the factor in a regression model (initially lm), if that
makes any difference.
Thanks,
Luke Whitaker
Inpharmatica