R语言里怎么求一个样本的众数

  统计/机器学习 描述性统计 R    浏览次数: 1728
2

R语言里面求一个数组s的平均值是mean(s),求数组s的中位数是median(s)。但是要求s的众数,mode(s)返回的却是这个变量的类型。请问R语言里什么命令是求数组的众数的?

 

机器小白   2017-02-16 09:40



   1个回答 
4

的确有些奇怪,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".

高代兄   2017-02-23 12:35



  相关主题

R里面求方差的函数var求的是样本方差还是总体方差   1回答

在R里面怎么把一系列类似的data.frame放在一起   1回答

R里paste0函数是什么意思?   1回答

R用lm做线性回归的时候,interaction term是冒号还是乘号?   1回答

怎么用R得到混淆矩阵?   1回答

R里的merge函数是inner join还是outer join?   1回答

glmnet中的参数lambda.min.ratio什么意思   1回答

python pandas里有没有类似R的summary的函数?   3回答

R语言里求二分类的log-loss   2回答

R里线性回归结果中最后的F-statistic什么意思?有什么用?   1回答

R语言有没有深度学习或者神经网络的包?   3回答

xgboost的gblinear是什么意思?   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!