[R] levels of factor when subsetting the factor
Afshartous, David
afshart at exchange.sba.miami.edu
Tue Sep 12 18:00:20 CEST 2006
thanks to all for the quick replies!
if the factor is part of a dataframe, I can apply the subsetting
to the entire dataframe, and then use drop=True to the factor
separately and then put it back into the new dataframe (code below). is there a way
to do this in a single step?
dat <-data.frame(fact = as.factor(c(rep("A", 3),rep("B", 3), rep("C", 3))),Y = rnorm(9))
dat.new = dat[1:6, ]
dat.new$fact = dat$fact[1:6, drop = T]
-----Original Message-----
From: pd at pubhealth.ku.dk [mailto:pd at pubhealth.ku.dk] On Behalf Of Peter Dalgaard
Sent: Tuesday, September 12, 2006 11:45 AM
To: Afshartous, David
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] levels of factor when subsetting the factor
"Afshartous, David" <afshart at exchange.sba.miami.edu> writes:
>
> All,
>
> When I take a subset of a factor the reduced factor still maintains
> all the original levels of the factor when say forming the key in a plot.
> The data is correct, but the variable still "remembers" the original
> levels. See below for reproducible code. Does anyone know how to fix
> this?
> cheers,
> dave
>
> fact = as.factor(c(rep("A", 3),rep("B", 3), rep("C", 3))) new.fact =
> fact[1:6]
> > new.fact
> [1] A A A B B B
> Levels: A B C ## should only show A B
Just use
> factor(new.fact)
[1] A A A B B B
Levels: A B
or
> fact[1:6, drop=T]
[1] A A A B B B
Levels: A B
And, no, it is not a bug. The fact that a subsample happens to consist only of males does not turn gender into a one-level factor... (Apart from the philosophy, it makes a real difference in tabulation.)
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list