R 计算模式或第二/第三/第四最常用值

R 计算模式或第二/第三/第四最常用值,r,function,mode,R,Function,Mode,当然,一定有一个功能,在那里的一些包为这个 我已搜索并找到此函数来计算模式: Mode <- function(x) { ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } Mode也许你可以试试 f <- function (x) with(rle(sort(x)), values[order(lengths, decreasing = TRUE)]) 但不建议这样做,因为输入向量x将被强制为因子优先。如

当然,一定有一个功能,在那里的一些包为这个

我已搜索并找到此函数来计算模式:

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
Mode也许你可以试试

f <- function (x) with(rle(sort(x)), values[order(lengths, decreasing = TRUE)])
但不建议这样做,因为输入向量
x
将被强制为因子优先。如果你有一个大的向量,这是非常缓慢的。同样在退出时,我们必须提取表的字符名和字符名,并将其强制为数字


示例

set.seed(0); x <- rpois(100, 10)
f(x)
# [1] 11 12  7  9  8 13 10 14  5 15  6  2  3 16

因此结果是相同的。

可能需要排序()的名称(表(x))[1]。显然,这可以被增强以处理多种模式。也许对于Breviti来说,
值[顺序(-length)]
我听到了。没有对错,只是短一点。你可能会激怒坚持的人。他们不喜欢缩写逻辑。
set.seed(0); x <- rpois(100, 10)
f(x)
# [1] 11 12  7  9  8 13 10 14  5 15  6  2  3 16
tab <- sort(table(x), decreasing = TRUE)
# 11 12  7  9  8 13 10 14  5 15  6  2  3 16 
# 14 14 11 11 10 10  9  7  5  4  2  1  1  1

as.numeric(names(tab))
# [1] 11 12  7  9  8 13 10 14  5 15  6  2  3 16