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

  统计/机器学习 描述性统计 R
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用lm做线性回归的时候,interaction term是冒号还是乘号?   1回答

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

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

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

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

有没有R的推荐系统的工具包(library)?   1回答

R里有没有package可以画ROC,计算AUC的?   1回答

估计标准差的标准差?   1回答

用python计算协方差   1回答

python里计算百分位数   2回答



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

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

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

我们谢绝答非所问。

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

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