R 在向量中查找n个最常见的值
我有一个建议R 在向量中查找n个最常见的值,r,count,ranking,R,Count,Ranking,我有一个建议 c(1,1,1,1,1,1,2,3,4,5,7,7,5,7,7,7) 如何计算每个元素,然后返回3个最常见的元素,即1、7、5?我确信这是重复的,但答案很简单: sort(table(variable),decreasing=TRUE)[1:3] 可以使用table()函数获取数组/向量中值频率的表格,然后对该表进行排序 x = c(1, 1, 1, 2, 2) sort(table(x)) 2 1 2 3 我不知道这是否比表格法更好,但如果您的列表已经是一个因子,那么它的汇
c(1,1,1,1,1,1,2,3,4,5,7,7,5,7,7,7)
如何计算每个元素,然后返回3个最常见的元素,即1、7、5?我确信这是重复的,但答案很简单:
sort(table(variable),decreasing=TRUE)[1:3]
可以使用table()函数获取数组/向量中值频率的表格,然后对该表进行排序
x = c(1, 1, 1, 2, 2)
sort(table(x))
2 1
2 3
我不知道这是否比表格法更好,但如果您的列表已经是一个因子,那么它的汇总方法将为您提供频率计数:
> summary(as.factor(c(1,1,1,1,1,1,2,3,4,5,7,7,5,7,7,7)))
1 2 3 4 5 7
6 1 1 1 2 5
然后你可以得到前三名最常出现的情况,如下所示:
> names(sort(summary(as.factor(c(1,1,1,1,1,1,2,3,4,5,7,7,5,7,7,7))), decreasing=T)[1:3])
[1] "1" "7" "5"
如果向量只包含整数,
制表
将比任何其他方法都快得多。需要注意以下几点:
- 默认情况下,它将返回从1到N的数字计数
- 它将返回一个未命名的向量
x=c(1,1,1,3)
,那么表格(x)
将返回(3,0,1)
。请注意,默认情况下,计数为1至最大值(x)
如何使用制表
确保可以传递任何数字
set.seed(45)
x <- sample(-5:5, 25, TRUE)
# [1] 1 -2 -3 -1 -2 -2 -3 1 -3 -5 -1 4 -2 0 -1 -1 5 -4 -1 -3 -4 -2 1 2 4
如果向量确实包含
NA
,则可以将table
与useNA=“always”
参数一起使用。可以使用table()。。如果要检查NA
是否是最常见的值,请参阅使用表(变量,useNA=“ifany”)
。否则,NA
s将被丢弃@戴维特:那是不对的
sort(setNames(tabulate(x + ifelse(min(x) <= 0, abs(min(x))+1, 0)),
seq(min(x), max(x))), decreasing=TRUE)[1:3]