如何在 R 資料框中根據分類變數求和?


查詢分組均值是很常見的事情,但是如果我們進行逐步分析,那麼當我們的資料集中存在分類變數時,也需要值的總和。這可以透過 dplyr 包的 `group_by` 和 `summarise_each` 函式輕鬆完成。

示例

考慮以下資料框

線上演示

> Group<-sample(LETTERS[1:4],20,replace=TRUE)
> Salary<-sample(21000:50000,20)
> Emp<-data.frame(Group,Salary)
> Emp

輸出

Group Salary
1 D 28256
2 B 31092
3 A 23147
4 C 28209
5 B 37676
6 C 33374
7 D 44864
8 B 40152
9 A 25843
10 A 40946
11 D 23321
12 A 42854
13 C 36960
14 A 35285
15 B 44478
16 B 36173
17 C 35077
18 A 39319
19 D 49204
20 A 41597

載入 dplyr 包

> library(dplyr)

查詢每個組的工資總和

示例

> Emp %>% group_by(Group) %>% summarise_each(funs(sum))
# A tibble: 4 x 2

輸出

Group Salary
1 A 248991
2 B 189571
3 C 133620
4 D 145645
Warning message:
`...` is not empty.

我們檢測到這些有問題的引數

* `needs_dots`

這些點僅用於允許將來的擴充套件,應該為空。

您是否錯誤指定了引數?

不用擔心這裡的警告訊息,這是由於 dplyr 的版本造成的。我們的輸出是正確的。如果您想忽略此警告,則需要從 CRAN 安裝最新版本的 tibble。我們在這裡展示這一點,因為您很可能會遇到同樣的問題,但不一定。

讓我們看看另一個例子

示例

線上演示

> x<-sample(c("India","USA","China","Canada"),20,replace=TRUE)
> y<-rpois(20,5)
> df<-data.frame(x,y)
> df

輸出

x y
1 India 5
2 India 3
3 India 4
4 China 5
5 Canada 3
6 USA 5
7 Canada 7
8 China 6
9 China 4
10 USA 7
11 China 5
12 India 8
13 Canada 3
14 India 6
15 Canada 5
16 Canada 3
17 Canada 7
18 USA 12
19 China 2
20 India 5

示例

> df %>% group_by(x) %>% summarise_each(funs(sum))
# A tibble: 4 x 2

輸出

x y
1 Canada 28
2 China 22
3 India 31
4 USA 24
Warning message:
`...` is not empty.

我們檢測到這些有問題的引數

* `needs_dots`

這些點僅用於允許將來的擴充套件,應該為空。

您是否錯誤指定了引數?

更新於:2020年11月19日

2K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.