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.