How to get the most frequent level of a categorical variable in R

前端 未结 3 649
花落未央
花落未央 2020-12-12 06:27

I can get the levels and frequencies of a categorical variable using table() function. But I need to feed the most frequent level into calculations later. How c

相关标签:
3条回答
  • 2020-12-12 06:47

    This is somehow related to the mode question, where you can find many other solutions to get the most frequent level. I collected some one-liner solutions and also show solutions when there is more than one most frequent level.

    #Create Dataset
    x <- c("a","a","b","c","c")
    
    #Some ways to get the FIRST most frequent level: "a"
    names(which.max(table(x)))
    names(sort(-table(x)))[1]
    names(sort(-table(x))[1])
    
    #Some ways to get ALL most frequent levels: "a" "c"
    names(which(max(table(x))==table(x)))
    names(table(x))[table(x)==max(table(x))]
    names(table(x)[table(x)==max(table(x))])
    #or the same but replace "table(x)" with "z"
    z <- table(x)
    names(which(max(z)==z))
    names(z)[z==max(z)]
    names(z[z==max(z)])
    
    0 讨论(0)
  • 2020-12-12 06:49
    a <- sample(x = c(19,   71,   98,  139,  146,  185,  191), size = 1000, replace = TRUE)
    tt <- table(a)
    names(tt[which.max(tt)])
    
    0 讨论(0)
  • 2020-12-12 06:52
    ll<-data.frame(table(a))
    ll[which.max(ll$Freq),]
    

    Example from mtcars data:

    ll<-data.frame(table(mtcars$cyl))
     ll
      Var1 Freq
    1    4   11
    2    6    7
    3    8   14
    
    ll[which.max(ll$Freq),]
      Var1 Freq
    3    8   14
    
    0 讨论(0)
提交回复
热议问题