提问者:小点点

计算具有特定行条件的列的百分比[重复]


我有以下数据帧:

 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

我想根据睡眠组用count的每个百分比填充prop列。例如,前3行prop应该是0.5、0.375和0.125,然后最后3行prop分别是0.555、0.333和0.111。

这可以手动完成,方法是首先通过睡眠分隔数据帧,然后为每个数据帧使用prop. table(prop),但是由于有许多睡眠组,我找不到简洁的方法来做到这一点。有什么想法吗?


共1个答案

匿名用户

R中,我们可以通过在按“睡眠”分组后除以“count”的sum来做到这一点

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

或者使用base R

df1$prop <- with(df1, ave(count, sleep, FUN=prop.table))