我想计算每组的相对频率。
这是我的数据集:
CATEGOTY VALUE COUNT
AAA 1 230
AAA 0 150
BBB 1 155
BBB 0 320
预期结果是这一个,其中PROC
是通过将COUNT
除以每组VALUE==0
和VALUE==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 :(得分: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