【问题标题】:Most frequent number in vector向量中出现频率最高的数字
【发布时间】:2013-09-26 19:34:52
【问题描述】:

我有一个向量a<-replicate(100, round(runif(1)))

我想数一下 0 和 1 哪个频率更高。

我可以使用table(a),但有没有更直接的方法来显示最常出现的数字?

我对表(a)的问题:

a在程序中多次生成,每次迭代记录最频繁的数字。如果我使用table(a),第一列的计数为0s,第二列的计数为1s。现在我使用b<-as.vector(table(a)) 直接获取计数并使用b[1] 作为0 的数量,b[2] 作为1 的数量。现在,如果向量中只有 1 或 0,那么 b 的长度将为 1,我不知道我有 100 个 1 还是 100 个 0。

【问题讨论】:

  • table(a) 对我来说似乎很直接。你到底想解决什么问题?
  • ftable(a) 将提供更有吸引力的显示
  • 请查看我的编辑,我解释了我的表格问题
  • tabulate 怎么样。在这种情况下,它只会返回个数。与 a 的长度进行一些基本比较会告诉您是否有更多的 1 或 0。

标签: r


【解决方案1】:

为什么不只是sum(a)?如果sum(a) > 50,1 更频繁。这是布尔值的常用技术。

【讨论】:

  • mean(a) > .5 无论向量的长度如何都可以工作。
【解决方案2】:

您可以将表格存储在data.frame 中,然后使用which.max

adf<-data.frame(table(a))
adf[which.max(adf$Freq),1]

【讨论】:

  • 你真的需要data.frame吗? table(a)[which.max(table(a))]?
  • 也许这可以是一个解决方案 as.vector(names(table(a)[which.max(table(a))]))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 2013-01-08
相关资源
最近更新 更多