【问题标题】:Calculate percentage for a column with certain condition of rows [duplicate]计算具有特定行条件的列的百分比[重复]
【发布时间】:2017-02-16 17:19:31
【问题描述】:

我有以下数据框:

 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

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

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

【问题讨论】:

标签: r frequency


【解决方案1】:

R中,我们可以通过'sleep'分组后除以'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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-18
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多