【发布时间】:2017-11-16 19:07:58
【问题描述】:
试图了解这个dplyr 的东西。我有一个排序的数据框,我想根据一个变量对其进行分组。但是,需要构造这些组,以便每个组在分组变量上的最小总和为 30。
考虑这个小示例数据框:
df1 <- matrix(data = c(05,0.9,95,12,0.8,31,
16,0.8,28,17,0.7,10,
23,0.8,11,55,0.6,9,
56,0.5,12,57,0.2,1,
59,0.4,1),
ncol = 3,
byrow = TRUE,
dimnames = list(c(1:9),
c('freq', 'mean', 'count')
)
)
现在,我想进行分组,使 count 的总和至少为 30。freq 和 mean 然后应该折叠成一个 weighted.mean,其中权重是 count 值。请注意,最后一个“bin”在第 7 行达到了 32 的总和,但由于第 8:9 行的总和仅为 2,所以我将它们添加到最后一个“bin”中。
像这样:
freq mean count
5.00 0.90 95
12.00 0.80 31
16.26 0.77 38
45.18 0.61 34
用dplyr简单的总结是没有问题的,但是这个我想不通。我确实认为解决方案隐藏在此处:
Dynamic Grouping in R | Grouping based on condition on applied function
但是如何将它应用到我的情况却让我无法理解。
【问题讨论】: