如何获得R中分类变量的最频繁级别

Posted

技术标签:

【中文标题】如何获得R中分类变量的最频繁级别【英文标题】:How to get the most frequent level of a categorical variable in R 【发布时间】:2013-08-28 07:46:48 【问题描述】:

我可以使用table() 函数获取分类变量的水平和频率。但是我需要稍后将最频繁的级别输入到计算中。我该怎么做?

例如,我想从分类变量 a 中获取“191”。

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

【问题讨论】:

【参考方案1】:

这在某种程度上与mode 问题有关,您可以在其中找到许多其他解决方案来获得最频繁的级别。我收集了一些单线解决方案,并在有多个最频繁级别时显示解决方案。

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

【讨论】:

【参考方案2】:
a <- sample(x = c(19,   71,   98,  139,  146,  185,  191), size = 1000, replace = TRUE)
tt <- table(a)
names(tt[which.max(tt)])

【讨论】:

【参考方案3】:
ll<-data.frame(table(a))
ll[which.max(ll$Freq),]

mtcars 数据示例:

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

【讨论】:

以上是关于如何获得R中分类变量的最频繁级别的主要内容,如果未能解决你的问题,请参考以下文章

更改逻辑回归中分类预测变量的参考组

在 R [重复] 中更改 glm 中的分类预测变量的级别

如何减少R中逻辑回归模型中的分类变量

R语言使用二元回归将序数数据建模为多元GLM

如何避免在递归中使用全局/类级别变量?

分类 - 因子水平的使用