R语言里面求一个数组s的平均值是mean(s),求数组s的中位数是median(s)。但是要求s的众数,mode(s)返回的却是这个变量的类型。请问R语言里什么命令是求数组的众数的?
1个回答
的确有些奇怪,R里并没有自带的求众数的函数的。
不过我们可以自己动手写一个。有两个常用方法。
方法一:自己定义一个函数。
FindMode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
注意这里返回的是字符型。
举个例子,比如s=c(1,2,1,1,2,3)的众数是1.
> FindMode(s)
返回"1"。
输入的样本也可以是字符类型,比如s=c("China","USA","China","England")
> FindMode(s)
返回"China"。
注意:如果有多个元素出现的次数并列第一,那么它只将返回最早出现的那个,比如s=c("man","woman","woman","man")
> FindMode(s)
返回"man"。
方法二:直接使用下面的命令。
> s = c("China","USA","China","England")
> names(sort(-table(s)))[1]
返回"China".