【问题标题】:Using R statistics add a group sum to each row [duplicate]使用R统计数据向每一行添加一个组总和[重复]
【发布时间】:2013-07-19 22:56:36
【问题描述】:

我有数据框df 喜欢:

key  entry  x1
1    1      0.2
1    2      0.1
1    3      0.5
1    4      0.6
2    1      0.2
2    2      0.1
2    3      0.7
2    4      0.3

每个组由key 定义,并具有相同数量的entry 值。我想保留这个表结构以备后用。我需要添加一个名为 sumx1 的新列,以便每一行都有与该行关联的键组的 x1 总和。

在上面的示例中,键组 1 的总和将为 0.2+0.1+0.5+0.6 = 1.4,因此在名为 sumx1 的新列中,我需要为键为 1 的每一行输入 1.4。

我试过了:

df["sumx1"] <- NA
df$sumx1 <- aggregate(df$sumx1, list(key=df$key), sum)

但这会引发警告错误,因为它只给我每组的总和。

【问题讨论】:

    标签: r


    【解决方案1】:

    使用ave:

     df$sumx1 <- ave(df$x1, df$key, FUN=sum)
    

    【讨论】:

      【解决方案2】:

      这种数据处理的首选包是plyr

      require(plyr)
      ddply(df, .(key), transform, sumx1=sum(x1))
      

      【讨论】:

        【解决方案3】:
        df <- data.frame(
            key=c(1, 1, 1, 1, 2, 2, 2, 2),
            entry=c(1, 2, 3, 4, 1, 2, 3, 4),
            x1=c(0.2, 0.1, 0.5, 0.6, 0.2, 0.1, 0.7, 0.3))
        
        df$sumx1 <- sapply( df$key, function(key) { sum(df$x1[df$key==key]) } )
        

        【讨论】:

          猜你喜欢
          • 2022-01-22
          • 1970-01-01
          • 2017-05-31
          • 1970-01-01
          • 1970-01-01
          • 2012-11-30
          • 1970-01-01
          • 1970-01-01
          • 2021-05-23
          相关资源
          最近更新 更多