我在一个比R中的例子更大的数据集中有一个作者的数据框,我希望得到更好的描述性。我知道(有点)如何获得maxsum
但我怎样才能得到唯一作者的最大摘要,例如前2位最常见的作者? 我将如何?然后能够确定新的maxsum
? 如何获得新maxsum
将是3而不是其输出的实际摘要? < / p>
我基本上在寻找总结我的数据的条件方式。有谁可以帮助我在这个部门?
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)
答案 0 :(得分: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
作者a
和c
已被删除,因为他们是数据集中最常出现的两位作者。
答案 1 :(得分:0)
在排除前2之后,你不清楚你有多少人。这假设你想要接下来的三个频率(因为你说你明白了maxsum是如何表现的)。如果您想要接下来的五个,那么将两个加到当前的maxsum ::
ex_s <- sort(summary(author_vec,maxsum=5), decreasing=TRUE)[-(1:2)]
ex_s
#------
b d e
2 2 1