如何在 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`
這些點僅用於允許將來的擴充套件,應該為空。
您是否錯誤指定了引數?
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP