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

  统计/机器学习 描述性统计 R    浏览次数:14621        分享
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".

SofaSofa数据科学社区DS面试题库 DS面经

高代兄   2017-02-23 12:35



  相关讨论

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

R里怎么对程序运行计时?

R里面dir函数是什么意思?

R里paste0函数是什么意思?

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

怎么对R的data.frame新增加一列?

LOWESS回归

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

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

R错误 predictor not in model

  随便看看

单一变量下的异常检测该怎么做?

推荐系统里的ALS是什么意思?

请问在sklearn怎么在已有的模型的基础上训练新的数据?

pandas.DataFrame里的loc和iloc什么区别?

假设检验中的p值是什么意思?为什么越小越好?