楼主: 耕耘使者
32406 12

[问答] R可以求众数吗? [推广有奖]

贵宾

已卖:5006份资源

学术权威

39%

还不是VIP/贵宾

-

威望
4
论坛币
1811021 个
通用积分
171.7911
学术水平
109 点
热心指数
173 点
信用等级
87 点
经验
93428 点
帖子
4549
精华
0
在线时间
2848 小时
注册时间
2006-4-6
最后登录
2025-7-12

楼主
耕耘使者 发表于 2012-2-25 10:33:44 |AI写论文
50论坛币
我用mode(x)时,得出的是[1] "numeric"
应该怎样求众数?
谢谢

最佳答案

famousid 查看完整内容

which.max(table(x)) 瞎做的,呵呵
关键词:numeric mode Eric NUM Mod

回帖推荐

诸葛山下 发表于9楼  查看完整内容

根据上面大家提到的方法,本人写一个简单的函数: getMode
已有 1 人评分论坛币 热心指数 收起 理由
jiangbeilu + 20 + 2 鼓励提问哈

总评分: 论坛币 + 20  热心指数 + 2   查看全部评分

沙发
famousid 发表于 2012-2-25 10:33:45
which.max(table(x))
瞎做的,呵呵
已有 3 人评分经验 论坛币 学术水平 热心指数 收起 理由
李会超 + 60 精彩帖子
jiangbeilu + 5 精彩帖子
耕耘使者 + 1 + 1 热心帮助其他会员

总评分: 经验 + 60  论坛币 + 5  学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
耕耘使者 发表于 2012-2-25 14:27:01
famousid 发表于 2012-2-25 11:49
which.max(table(x))
瞎做的,呵呵
高!
呵呵,但有没有直接的办法呢?如求中位数一样:median(x)

板凳
superhugo 发表于 2012-2-25 16:12:32
mode函数对应的包是dprep,是在R版本2.10.0之前建的。看了一下2.14.0里面已经没有这个包了 你直接用mode肯定算不出来。
关于众数的讨论 可以看下统计之都Cos里面的讨论文章 对你应该有帮助:
http://cos.name/cn/topic/15112
已有 3 人评分经验 论坛币 热心指数 收起 理由
李会超 + 60 精彩帖子
jiangbeilu + 5 精彩帖子
耕耘使者 + 1 鼓励积极发帖讨论

总评分: 经验 + 60  论坛币 + 5  热心指数 + 1   查看全部评分

报纸
耕耘使者 发表于 2012-2-25 17:33:35
superhugo 发表于 2012-2-25 16:12
mode函数对应的包是dprep,是在R版本2.10.0之前建的。看了一下2.14.0里面已经没有这个包了 你直接用mode肯定 ...
谢谢,看来,现在R确实没有直接求众数的命令了。
而且证明,沙发上的老兄提出的办法是最好的了。

地板
superhugo 发表于 2012-2-25 19:38:01
耕耘使者 发表于 2012-2-25 17:33
谢谢,看来,现在R确实没有直接求众数的命令了。
而且证明,沙发上的老兄提出的办法是最好的了。
嗯 确实是的
要是想简单点,直接在EXCEL里面求也行 =MODE(xx : xx)
对连续性变量 实际上对应的就是概率密度曲线的顶点位置吧。
已有 1 人评分学术水平 收起 理由
耕耘使者 + 1 热心帮助其他会员

总评分: 学术水平 + 1   查看全部评分

7
耕耘使者 发表于 2012-2-25 20:08:25
明白了,谢谢几位朋友

8
heavenicefox 发表于 2016-2-23 22:19:38
famousid 发表于 2012-2-25 10:33
which.max(table(x))
瞎做的,呵呵
30  31  47  50  52  52  56  60  63  70 70 110
如果是这样的数据,众数有两个,就不是太好搞了。
已有 1 人评分学术水平 热心指数 收起 理由
耕耘使者 + 3 + 3 鼓励积极发帖讨论

总评分: 学术水平 + 3  热心指数 + 3   查看全部评分

9
诸葛山下 发表于 2016-3-9 19:59:58
根据上面大家提到的方法,本人写一个简单的函数:
getMode <- function(x){
  if(is.numeric(x)==T){
    return(which(table(x)==max(table(x))))
  }
  else cat('the input must be numeric')
}

核心用which(table(x)==max(table(x)))来得到所有的众数
已有 1 人评分学术水平 热心指数 收起 理由
耕耘使者 + 3 + 3 鼓励积极发帖讨论

总评分: 学术水平 + 3  热心指数 + 3   查看全部评分

10
jiangbeilu 学生认证  发表于 2016-3-10 10:05:27
简单点的做法:
  1. x=sample(1:10,100,replace=TRUE)
  2. table(x)[table(x)==max(table(x))]
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
耕耘使者 + 2 + 2 观点有启发

总评分: 学术水平 + 2  热心指数 + 2   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 01:30