2017-02-16 9 views
-2

У меня есть следующий dataframe:Вычислить процент для столбца с определенным условием строк

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 колонки с каждым процентом count на основе sleep группы. Например, первые 3 строки prop должны быть 0,5, 0,375 и 0,125, тогда последние 3 строки prop составляют 0,555, 0,333 и 0,111 соответственно.

Это может быть сделано вручную, разделив кадр данных по sleep первым затем использовать prop.table(prop) для каждого, но так как существуют многочисленные sleep группы я не могу найти краткий способ сделать это. Есть предположения?

+1

Возможный дубликат [dplyr : поиск процента в подгруппе с использованием группы \ _by и подведение итогов] (http://stackoverflow.com/questions/29549731/dplyr-finding-percentage-in-a-sub-group-using-group-by-and- суммировать) или [Подведение итогов по проценту подгруппы в R] (http://stackoverflow.com/questions/27134516/summarizing-by-subgroup-percentage-in-r) –

ответ

-1

В R, мы можем сделать это путем деления на 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)) 
Смежные вопросы