列出前n个最频繁重复的值,包括其他值

6

我已经创建了一张表格,其中包括一个按照性别、主题等分类的1000首歌曲列表。我想知道有多少年份重复,并且有多少在其他类别中。我尝试过:

sort(summary(as.factor(canciones$YEAR)), decreasing=T)[1:3]

输出结果如下:

1968 1966 1979 
  39   37   34 

但我希望它能够实现

1968 1966 1979 Others
  39   37   34    950

1
你能提供一个可重现且具有普适性的例子来解释你的问题吗?这样我们(以及未来的读者)就可以重新创建你的问题了。 - Nancy
2
为什么你不在这里使用 table - TARehman
2个回答

9

这里是一些样本数据。

set.seed(1)
x <- sample(10, 500, TRUE)

我们可以运行整个汇总,选择前三个子集,然后将剩余值计算为“其他”并添加到末尾。另外,我认为您可以只使用 table() 而不是 summary(factor()),因为 summary.factor() 在幕后已经执行了这个操作。
xx <- sort(table(x), decreasing = TRUE)
c(xx[1:3], Others = sum(xx[-(1:3)]))
#     5      2      4 Others 
#    64     61     57    318 

注意:使用Others = length(x) - sum(xx[1:3])可能会更快,也可能不会更快。


0

我使用一个叫做maxsum的参数解决了这个问题

plot_data <- sort(summary(as.factor(canciones$YEAR),maxsum=3), decreasing=T)[1:3]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接