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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Dalgaard
Sent: Tuesday, September 12, 2006 11:45 AM
To: Afshartous, David
Cc: r-help@stat.math.ethz.ch
Subject: Re: [R] levels of factor when subsetting the factor

"Afshartous, David" <[EMAIL PROTECTED]> 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
~~~~~~~~~~ - ([EMAIL PROTECTED])                  FAX: (+45) 35327907

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code.

Reply via email to