2016-12-14 622 views
0

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

这是我的数据集:

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

回答

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 
1
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