如何计算每组的相对频率

时间:2016-12-14 19:50:18

标签: r

我想计算每组的相对频率。

这是我的数据集:

CATEGOTY   VALUE  COUNT
AAA        1      230
AAA        0      150
BBB        1      155
BBB        0      320

预期结果是这一个,其中PROC是通过将COUNT除以每组VALUE==0VALUE==1的总和得到的:

CATEGOTY   VALUE  COUNT   PROC
AAA        1      230     0.60
AAA        0      150     0.40
BBB        1      155     0.33
BBB        0      320     0.67

事实上,我使用此代码收到了第一个分组数据集:

set = df %>%
  group_by(CATEGORY,VALUE) %>%
  summarise(COUNT = n())

所以,我想知道如何调整此代码以获得一个列PROC

2 个答案:

答案 0 :(得分:2)

library(dplyr)
df %>% group_by(CATEGOTY) %>% mutate(PROC = round(COUNT/sum(COUNT),1))

#  CATEGOTY VALUE COUNT  PROC
#     <chr> <int> <int> <dbl>
#1      AAA     1   230   0.6
#2      AAA     0   150   0.4
#3      BBB     1   155   0.3
#4      BBB     0   320   0.7

答案 1 :(得分:0)

以基数R:

df$PROC <- round(ave(df$COUNT, df$CATEGOTY, FUN=function(x)x/sum(x)),3)
df
#  CATEGOTY VALUE COUNT  PROC
#1      AAA     1   230 0.605
#2      AAA     0   150 0.395
#3      BBB     1   155 0.326
#4      BBB     0   320 0.674