R 中的条件摘要:MaxSum

Conditional Summary in R: MaxSum

我有一个作者的数据框,数据集比 R 中的示例大得多,我希望得到更好的描述。我知道(有点)如何获得 maxsum 我怎样才能获得唯一作者的最大摘要,例如前 2 个最常见的作者? 然后我如何才能确定新的 maxsum 我将如何获得新的 maxsum 为 3 而不是输出的实际摘要有吗?

我基本上是在寻找有条件的方法来总结我的数据。有人可以在这个部门帮助我吗?

dat <- data.frame(author=c("a", "b", "c", "d", "a", "b", "c", "d", "e", "a", "a", "a","a", "a", "c","c","c","c"),Post=c("one", "one", "one", "one", "one", "one", "one", "one", "one", "one","one", "one","one", "one","one", "one","one", "one"))
authors <-dat[,1]
author_vec <- (authors)
length(unique(author_vec)) #5
ex_s <- summary(as.factor(neg.author_vec),maxsum=5)

不清楚在排除前 2 名后您期望有多少。这假设您想要接下来的三个频率(因为您说您了解 maxsum 的行为方式)。如果你想要接下来的五个,那么将两个添加到你当前的 maxsum::

ex_s <- sort(summary(author_vec,maxsum=5), decreasing=TRUE)[-(1:2)]
ex_s
#------
b d e 
2 2 1 

这是使用 plyr 库的方法:

require(plyr)
temp <- ddply(dat, ~author, summarise, sum=length(author))
temp <- temp[order(-temp$sum), ][3:nrow(temp), ]

> temp
  author sum
2      b   2
4      d   2
5      e   1

作者 ac 已被删除,因为他们是数据集中出现频率最高的两位作者。