簡體   English   中英

在data.frame中按組求和

[英]sum by group in a data.frame

我試圖獲取每個分類變量(在數據框中)的數字變量的總和。 我試過使用tapply ,但是它並不需要整個data.frame

這是一個工作示例,其中包含一些數據,如下所示:

> set.seed(667) 
> df <- data.frame(a = sample(c("Group A","Group B","Group C",NA),  10, rep = TRUE), 
                   b = sample(c(1, 2, 3, 4, 5, 6),  10, rep=TRUE), 
                   c = sample(c(11, 12, 13, 14, 15, 16),  10, rep=TRUE))
> df
          a b  c
 1  Group A 4 12
 2  Group B 6 12
 3     <NA> 4 14
 4  Group C 1 16
 5     <NA> 2 14
 6     <NA> 3 13
 7  Group C 4 13
 8     <NA> 6 15
 9  Group B 3 16
 10 Group B 5 16

使用tapply ,我一次可以得到一個向量:

> tapply(df$b,df$a,sum)
 Group A Group B Group C 
       4      14       5     

但是我對獲得這樣的東西更感興趣:

         a  b  c
1  Group A  4 12
2  Group B 14 44
3  Group C  5 29

任何幫助,將不勝感激。 謝謝。

改用聚合:

 aggregate(df[ , c("b","c")], df['a'], FUN=sum)
        a  b  c
1 Group A  4 12
2 Group B 14 44
3 Group C  5 29

我不確定為什么,但是您需要傳遞第二個參數以將其聚合為列表,因此使用df $ a會出錯。 然后,它在第一個參數中的各個列上使用該函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM