R 计算具有特定行条件的列的百分比

R 计算具有特定行条件的列的百分比,r,frequency,R,Frequency,我有以下数据帧: sleep health count prop 1 7 Good 100 NA 2 7 Normal 75 NA 3 7 Bad 25 NA 4 8 Good 125 NA 5 8 Normal 75 NA 6 8 Bad 25 NA 我想在prop列中填入基于sleep组的count的每个百分比。例如,前3行prop应分别为0.5、0.375和0.1

我有以下数据帧:

 sleep health count prop
1     7   Good   100   NA
2     7 Normal    75   NA
3     7    Bad    25   NA
4     8   Good   125   NA
5     8 Normal    75   NA
6     8    Bad    25   NA
我想在
prop
列中填入基于
sleep
组的
count
的每个百分比。例如,前3行
prop
应分别为0.5、0.375和0.125,然后最后3行
prop
分别为0.555、0.333和0.111


这可以手动完成,首先通过
sleep
分离数据帧,然后对每个数据帧使用
prop.table(prop)
,但是由于有大量
sleep
组,我找不到一种简洁的方法来完成。有什么想法吗?

R
中,我们可以用“睡眠”分组后的“计数”的总和除以

library(dplyr)
df1 %>% 
    group_by(sleep) %>%
    mutate(prop = round(count/sum(count), 3))
#    sleep health count  prop
#    <int>  <chr> <int> <dbl>
#1     7   Good   100 0.500
#2     7 Normal    75 0.375
#3     7    Bad    25 0.125
#4     8   Good   125 0.556
#5     8 Normal    75 0.333
#6     8    Bad    25 0.111
或的可能副本
df1$prop <- with(df1, ave(count, sleep, FUN=prop.table))