【问题标题】:How to sum a variable by group when I have more than two variables?当我有两个以上的变量时,如何按组对变量求和?
【发布时间】:2015-08-21 00:53:42
【问题描述】:

我的问题与另一个用户 How to sum a variable by group? 的上一个问题类似,但我的数据框中有两个以上的变量。看起来有点像这样:

A   B    C      D        E 
1   m   1990    1989    200 
1   m   1990    1990    100
1   m   1991    1989    10 
2   m   1991    1990    20 
2   m   1991    1991    100
3   m   1992    1989    30 
3   m   1992    1990    20 
3   m   1992    1991    10
4   m   1992    1992    10 
4   m   1993    1989    50

我想丢失变量 D 并对 A、B 和 C 中的每个相同值求和 E,而不会丢失其他变量。我尝试了上面链接中给出的建议(聚合、按等),但我最终只得到了两个变量。我想要这样的东西:

A    B   C      E
1   m   1990    300
1   m   1991    10
2   m   1991    120
3   m   1992    30
3   m   1992    30
4   m   1992    10
4   m   1993    50

提前谢谢你!

(这是我的第一个问题,所以如果不恰当/遗漏了什么,请告诉我。)

【问题讨论】:

    标签: r sum aggregate


    【解决方案1】:

    我认为aggregate(E ~ A + B + C, data=df, FUN=sum) 应该可以解决问题。这会拆分 A、B 和 C 列上的数据并计算 E 的总和。

    > aggregate(e ~ a+b+c, data=df, FUN=sum)
    
      a b    c   e
    1 1 m 1990 300
    2 1 m 1991  10
    3 2 m 1991 120
    4 3 m 1992  60
    5 4 m 1992  10
    6 4 m 1993  50
    

    【讨论】:

      【解决方案2】:

      查看 dplyr 软件包。解决方案类似于:

      library(dplyr)
      data <- your_data
      data_summed<- data %>% group_by(A, B, C) %>% mutate(F = sum(E))
      

      然后可以使用 dplyr 的 filter() 为您的最终 data.frame 仅选择感兴趣的列。

      有关变化,请查看此cheatsheet;太棒了。

      【讨论】:

        猜你喜欢
        • 2021-02-11
        相关资源
        最近更新 更多