# [R] Making a factor with common levels ...

Frank E Harrell Jr fharrell at virginia.edu
Thu Sep 27 18:32:30 CEST 2001

```The combine.levels function in the Hmisc library is
related to this:

combine.levels <- function(x, minlev=.05) {
x <- as.factor(x)
lev <- levels(x)
f <- table(x)/sum(!is.na(x))
i <- f < minlev
si <- sum(i)
if(si==0) return(x)
levels(x) <- if(si==1) list(names(sort(f))[1:2]) else
list(OTHER=names(f)[i])
x
}

This combines levels that have a relative frequency
below 'minlev' into new categories.  -Frank Harrell

j.logsdon at lancaster.ac.uk wrote:
>
> This is doing my head in.  Staying away from R for too long is bad for the
> health!
>
> I have two vectors of character names where there may be repetition and
> from which I want to form two factors with the same levels but only if
> there are more than N instances of each name in each vector.
>
> I can get the list of common names quite easily, using:
>
> nn<-sort(unique(c(levels(n1)[table(n1)>N],levels(n0)[table(n0)>N])))
>
> Some of the factor levels may be empty for one of the factors but the same
> level must be present in the other.
>
> Is there a simple way to extract nn0 and nn1 so that the pairs remain
> correctly aligned and each list has at least N cases of each name?  Or do
> I have to jump into my steamroller and do a couple of loops?
>
> TIA
>
> John
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

--
Frank E Harrell Jr              Prof. of Biostatistics & Statistics
Div. of Biostatistics & Epidem. Dept. of Health Evaluation Sciences
U. Virginia School of Medicine  http://hesweb1.med.virginia.edu/biostat
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```