我可以使用table()
函数获取分类变量的级别和频率。但我需要在以后的计算中提供最频繁的水平。我怎么能这样做?
例如,我想从分类变量a获得“191”。
> table(a)
a
19 71 98 139 146 185 191
305 75 179 744 1 1980 6760
答案 0 :(得分:4)
a <- sample(x = c(19, 71, 98, 139, 146, 185, 191), size = 1000, replace = TRUE)
tt <- table(a)
names(tt[which.max(tt)])
答案 1 :(得分:1)
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
答案 2 :(得分:0)
这在某种程度上与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)])