获得队列日和天数的百分比

时间:2016-11-08 09:32:24

标签: r dataframe

我有一个同期保留数据框

> cohortData
           cohort dayCount count
    1  25/10/2016        0   238
    2  25/10/2016        1   137
    3  25/10/2016        2    78
    4  25/10/2016        3    32
    5  25/10/2016        4    21
    6  25/10/2016        5    25
    7  26/10/2016        0   134
    8  26/10/2016        1    97
    9  26/10/2016        2    49
    10 26/10/2016        3    22
    11 26/10/2016        4    22
    12 27/10/2016        0   136
    13 27/10/2016        1    88
    14 27/10/2016        2    38
    15 27/10/2016        3    15
    16 28/10/2016        0   138
    17 28/10/2016        1    25
    18 28/10/2016        2    19
    19 29/10/2016        0   144
    20 29/10/2016        1    28
    21 30/10/2016        0   135

我想要做的是添加一个百分比列,以获得每个群组的计数百分比和天数0,因此对于群组25/10/2016 dayCount 0到2的百分比值将是238 / 238,137 / 238 ,78/238。

我看过table.prop但是无法得到我想要的结果,我尝试过做cohortData$count / (by=list(cohortData$cohort, cohortData$dayCount==0)),但这不正确,只是出错。

我可以将数据转换为NxN矩阵,获取第二个矩阵来查找%值,然后将其取消列表并与上面的数据框联接,但我相信应该有一个更简单,更优雅的方法来实现它><

1 个答案:

答案 0 :(得分:0)

dplyr解决方案就是这种方法:

library(dplyr)

cohortData %>% 
  group_by(cohort) %>%
    mutate(percentage = count/count[dayCount == 0])
#        cohort dayCount count percentage
#        <fctr>    <int> <int>      <dbl>
#1  25/10/2016        0   238 1.00000000
#2  25/10/2016        1   137 0.57563025
#3  25/10/2016        2    78 0.32773109
#4  25/10/2016        3    32 0.13445378
#5  25/10/2016        4    21 0.08823529
#6  25/10/2016        5    25 0.10504202
#7  26/10/2016        0   134 1.00000000
#8  26/10/2016        1    97 0.72388060
#9  26/10/2016        2    49 0.36567164
#10 26/10/2016        3    22 0.16417910
## ... with 11 more rows