2016-12-14 18 views
0

グループごとの相対頻度を計算したいと思います。グループごとの相対頻度を計算する方法

これは私のデータセットです。

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

期待される結果がPROCVALUE==0とグループごとVALUE==1の和でCOUNTを割ったこの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 

実際にはIこのコードを使用して最初のグループ化されたデータセットを受信しました:

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

もう1つの列を得るためにこのコードを調整する方法を知りたいですPROC。基地Rと

答えて

0

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 
関連する問題