![](/img/trans.png)
[英]R : Getting the sum of columns in a data.frame group by a certain column
[英]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.