【问题标题】:Summary table for aggregate values in a data frame数据框中聚合值的汇总表
【发布时间】:2016-06-18 13:40:45
【问题描述】:

我有一个如下所示的数据框

    ID        VALUE   GROUP   MODEL
1     id_1   17.6100597 Group A Model B
2    id_10 6814.7109375 Group A Model B
3   id_100   26.5990372 Group C Model F
4  id_1000    0.0000000 Group B Model D
5   id_101  486.4001160 Group C Model C
6   id_102  108.9007416 Group C Model C
7   id_103    1.0070915 Group B Model F
8   id_104    0.5426522 Group B Model F
9   id_105    1.1137601 Group C Model C
10  id_106    0.2867465 Group C Model C

我想创建一个汇总表,其中包含基于组和模型的聚合值。因此,对于每个组,每个模型的聚合以及该组的总数的另一行。喜欢

# Groups    Models    Aggregates
# Group A   Model A   aggAA
# Group A   Model B   aggAB
# Group A   Total A   aggA
# Group B   Model A   aggBA
# Group B   Model B   aggBB
# Group B   Model C   aggBC
# Group B   Total B   aggB

我为此创建了这个脚本

dat <- read.csv2("data.csv")

dat$GROUP <- factor(dat$GROUP)
groupnames <- levels(dat$GROUP)

resume <- NULL
for (group in groupnames) {
  dat1 <- dat1[dat1$GROUP == group,]

  aggdat1 <- aggregate(dat1[,"VALUE"],list(dat1[,"MODEL"]),FUN=sum)
  colnames(aggdat1) <- c("MODEL", "VALUE")

  resumegroup <- rbind(aggdat1,c(" ",colSums(aggdat1[-1])))
  resumegroup <- cbind("GROUP"=group,resumegroup)

  resume <- rbind(resume,resumegroup)
}

resume

不幸的是,这不起作用,我在子集命令之后收到了一条奇怪的错误消息,已经在第一次迭代(A 组)时很明显必须包含一些行。

(或 0 长度行名称)

aggregate.data.frame(as.data.frame(x), ...) 中的错误: 没有要聚合的行

【问题讨论】:

    标签: r dataframe sum aggregate


    【解决方案1】:

    这是你要找的吗?:

    library(dplyr)
    dat %>% group_by(GROUP,MODEL) %>% summarise(sum = sum(VALUE))
    

    或在好旧的R

    aggregate(a$VALUE , by = list( a$GROUP , a$MODEL )  , FUN = sum)
    

    【讨论】:

    • 该死!是的,但是没有那个图书馆就没有办法吗?还要加总?
    • 是的,每个组的VALUE 的总和,作为最后一行。我最好选择第二个,但它混淆了GROUP,并基于MODEL
    • a %&gt;% group_by(GROUP,MODEL) %&gt;% summarise(sum = sum(VALUE)) %&gt;% group_by(GROUP) %&gt;% mutate(group.sum = sum(sum) )
    • 好吧,你值得被打勾! :) 我会试着从这个开始得到我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多