【问题标题】:Conditional Summary in R: MaxSumR中的条件摘要:MaxSum
【发布时间】:2015-12-01 05:28:20
【问题描述】:

我会在比 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)

【问题讨论】:

    标签: r vector dataframe summary


    【解决方案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 已被删除,因为他们是数据集中出现频率最高的两位作者。

    【讨论】:

    • 我怎样才能得到temp$sum的总和?
    【解决方案2】:

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

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

    【讨论】:

    • 我如何获得新的最大总和为 3 而不是它的输出的实际摘要?
    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    相关资源
    最近更新 更多