我有一个同期保留数据框
> 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矩阵,获取第二个矩阵来查找%值,然后将其取消列表并与上面的数据框联接,但我相信应该有一个更简单,更优雅的方法来实现它><
答案 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