找到分组均值是很常见的事情,但是如果我们进行逐步分析,那么当我们在数据集中有一个分类变量时,也需要求和。可以借助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`
这些点仅存在以允许将来扩展,应为空。
您没有正确说明一个论点?