Вы можете немного упростить его (и заметьте, что ordered
- это класс для порядковых множителей, поэтому вы можете назвать это просто с помощью median(o)
, где o
- ваша переменная):
median.ordered <- function(x)
{
levs <- levels(x)
m <- median(as.integer(x))
if(floor(m) != m)
{
warning("Median is between two values; using the first one")
m <- floor(m)
}
ordered(m, labels = levs, levels = seq_along(levs))
}
Использование:
median(ordered(c("A", "B", "C")))
median(ordered(c("A", "B", "A", "B")))