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

谁说胖子不能爱 提交于 2019-12-17 21:22:45

问题


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 can I do that?

for example, I want to get "191" from categorical variable a.

> table(a)
a
  19   71   98  139  146  185  191 
 305   75  179  744    1 1980 6760

回答1:


a <- sample(x = c(19,   71,   98,  139,  146,  185,  191), size = 1000, replace = TRUE)
tt <- table(a)
names(tt[which.max(tt)])



回答2:


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



回答3:


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


来源:https://stackoverflow.com/questions/18433647/how-to-get-the-most-frequent-level-of-a-categorical-variable-in-r

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!