我有以下数据帧:
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)
,但是由于有许多睡眠
组,我找不到简洁的方法来做到这一点。有什么想法吗?
在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))