Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在向量中查找n个最常见的值_R_Count_Ranking - Fatal编程技术网

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]