R语言里面没有自带求众数的函数,那么怎么办呢?只有自己手动结合其它函数求出众数了。
众所周知,众数就是一组数据中出现次数最多的数据,我们可以考虑用table()这个频率函数。
首先说一下table()这个函数的用法
> a <- c(1,2,2,3,2,4,3,3,2,3,1,4,5,6)
我们先用table()函数求出每个数据的频数。
>b <- table(a)
b
1 2 3 4 5 6
2 4 4 2 1 1
显然,是2,3出现次数最多,都出现了4次。
> names(b)
[1] "1" "2" "3" "4" "5" "6"
查看了这些原始数据
> as.numeric(b)
[1] 2 4 4 2 1 1
查看了对应的频率
下面就慢慢分析怎么用一句代码实现众数。
(1)、> b == max(b)
a
1 2 3 4 5 6
FALSE TRUE TRUE FALSE FALSE FALSE
(2)、> names(b)
[1] "1" "2" "3" "4" "5" "6"
(3)、> names(b)[b == max(b)]
[1] "2" "3"
这样我们就可以考虑这样做:
> as.numeric(names(table(a))[table(a) == max(table(a))])
[1] 2 3
这样就求出了一组数据的众数!
式子还是很复杂的,我们也可以考虑把它写成一个函数,否则太复杂了。
zhongshu <- function(x)
{
return(as.numeric(names(table(x))[table(x) == max(table(x))]))
}
我们来调用这个函数看看,发现是对的哦!
> zhongshu(a)
[1] 2 3
联系客服