使用group_by查找子组中的百分比并进行汇总 [英] Finding percentage in a sub-group using group_by and summarise
问题描述
我有以下数据: p>
月类型计数
1 Feb-14 bbb 341
2 Feb-14 ccc 527
3 Feb-14 aaa 2674
4 Mar-14 bbb 811
5 Mar-14 ccc 1045
6 Mar-14 aaa 4417
7 Apr-14 bbb 1178
8 4月14日ccc 1192
9四月-14 aaa 4793
10五月-14 bbb 916
.. ... ... ...
我想使用dplyr来计算每个类型(aaa,bbb,ccc)在一个月级别的百分比,即
每个
的月份类型计数1 Feb-14 bbb 341 9.6%
2 Feb-14 ccc 527 14.87%
3 Feb-14 aaa 2674 ..
.. ... ... ...
我试过
data%>%
group_by(month,type)%>%
summary(count / sum(count))
这将给出1作为每个值。如何在本月的所有类型中计算总和?
尝试
library(dplyr)
data%>%
group_by(month)%>%
mutate(countT = sum(count))%>%
group_by(type,add = TRUE)%>%
mutate(per = paste0(round(100 * count / countT,2),'%' ))
我们还可以使用 left_join
总结 sum(count)
by'month'
或使用数据的选项。表
。
library(data.table)
setkey(setDT(data),month)[data [,list = sum(count)),month],
per:= paste0(round(100 * count / i.count,2),'%')] []
I am new to dplyr and trying to do the following transformation without any luck. I've searched across the internet and I have found examples to do the same in ddply but I'd like to use dplyr.
I have the following data:
month type count
1 Feb-14 bbb 341
2 Feb-14 ccc 527
3 Feb-14 aaa 2674
4 Mar-14 bbb 811
5 Mar-14 ccc 1045
6 Mar-14 aaa 4417
7 Apr-14 bbb 1178
8 Apr-14 ccc 1192
9 Apr-14 aaa 4793
10 May-14 bbb 916
.. ... ... ...
I want to use dplyr to calculate the percentage of each type (aaa, bbb, ccc) at a month level i.e.
month type count per
1 Feb-14 bbb 341 9.6%
2 Feb-14 ccc 527 14.87%
3 Feb-14 aaa 2674 ..
.. ... ... ...
I've tried
data %>%
group_by(month, type) %>%
summarise(count / sum(count))
This gives a 1 as each value. How do I make the sum(count) sum across all the types in the month?
Try
library(dplyr)
data %>%
group_by(month) %>%
mutate(countT= sum(count)) %>%
group_by(type, add=TRUE) %>%
mutate(per=paste0(round(100*count/countT,2),'%'))
We could also use left_join
after summarising the sum(count)
by 'month'
Or an option using data.table
.
library(data.table)
setkey(setDT(data), month)[data[, list(count=sum(count)), month],
per:= paste0(round(100*count/i.count,2), '%')][]
这篇关于使用group_by查找子组中的百分比并进行汇总的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!