[R] subset problem (reducing from six to two levels)

Peter Dalgaard p.dalgaard at biostat.ku.dk
Thu Feb 5 22:53:22 CET 2009

Ine wrote:
> Hi all,
> I have got a seemingly simple problem (I am an R starter) with subsetting my
> data set, but cannot figure out the solution: I want to subset a data set
> from six to two levels, so that all analyses are done only with these two
> remaining levels.
> I tried
> TOTAL<-read.delim('total.csv',header=T)
> SUBSET.OF.TOTAL<-subset(TOTAL, FactorX %in% c("Level1","Level2"))
> but R does not eliminate the remaining levels of FactorX, just assigns 'not
> available' to the data. Like this, the other levels still show up in plots
> etc., but without data entries. Anybody got a solution how to subset the
> data so that I eliminate the other levels completely?
> Thanks a lot for the help,

R does not "assign 'not available'" (look at the subsetted data).

However, factors do not lose levels just because they are not present in 
a subset of data. There are good reasons for that, but let's not go 
there this time (look in the list archives if you care). To get rid of 
unwanted levels, use

FactorXX <- factor(FactorX, levels=c("Level1","Level2"))

or just factor(FactorX) if you know that both levels are present (or 
don't care).

    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