如何在 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`
这些点仅用于允许将来的扩展,应该为空。
您是否错误指定了参数?
广告