Idiomatik tartibli medianni topish usuli

Men R da medianni topib olishim kerak (ya'ni buyurilgan omil).

Buning uchun standart kutubxonada usulni topa olmadim, shuning uchun men quyidagi nopok echim bilan tanishdim:

ordinal.median <- function(x){
        lbls <- levels(x)
        new.vars <- c(NA, 1:length(lbls))
        new.vars[1] <- median(as.numeric(x))
        return(factor(new.vars, labels=lbls, ordered=T)[1])
}

R uchun bu odatiy hal nima bo'lar edi?

2
quantile (x, 0.5, tip = c (1,3)) raqamli bo'lmagan kod x
qo'shib qo'ydi muallif James, manba

1 javoblar

Siz uni biroz soddalashtirasiz (va buyurtma qilingan tartibidagi omillar uchun sinfdir, shuning uchun buni median (o) code> o'zgarmaydigan):

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))
}

Foydalanish:

median(ordered(c("A", "B", "C"))) 
median(ordered(c("A", "B", "A", "B")))
5
qo'shib qo'ydi
@csgillespie: rozilik berildi. Men ogohlantirishni qo'shdim.
qo'shib qo'ydi muallif Richie Cotton, manba
O'rta nuqta "bo'linish" kerak bo'lsa, ehtimol siz ogohlantirishni kiritishingiz kerak. Masalan, c ("A", "A", "B", "B")
qo'shib qo'ydi muallif csgillespie, manba