dplyr R 组总计因因素而异
dplyr R group totals differ between factors
我整天都在尝试使用 dplyr 在 R 中总结数据集,但似乎 a) 得到不一致的结果,或者 b) 停止思考!
我的数据集'resi_type(见下文)捕获了一个城市的人口数字和垃圾产生率。我试图从三个层面总结这些数字:
geo_zone、选区和社会经济领域(低、中、高)。这些是按大小顺序排列的,例如有 437 个单独的区域属于三个社会经济 类 之一;这些都只在六个选区之一;六个选区位于四个 geo_zone 之一。
我对 dplyr 的速度和易用性印象深刻,并一直使用它来总结我的数据并添加一些计算值。例如,在选区级别汇总整个数据集:
constit_sum <-
resi_type %.%
group_by(constit, grouped_types) %.%
summarise(area = sum(area),
constit_pop = first(constit_pop),
wg_rate = first(per_capita)) %.%
mutate(prop = area/sum(area)*100) %.%
mutate(pop = (prop/100)*constit_pop) %.%
mutate(waste = (wg_rate*pop)/1000)
这对我来说很不错 table。如果我对这些行求和,我的总人口为 939,370,总 'waste' 产量为 744.3238(吨)。
现在,当我尝试在县级生成摘要时,我一直在玩两段代码。当我跨行求和时,这个产生与上面相同的结果,例如总人口 939,370,总 'waste' 产量 744.3238(吨):
county_sum <-
constit_sum %.%
group_by(grouped_types) %.%
summarise(area = sum(area),
waste = sum(waste))
但是,以下代码块是解决同一问题的略有不同的方法,会产生不同的结果,例如总人口 939,370,总产量 'waste' 757.8447(吨)
county_sum2 <-
resi_type %.%
group_by(grouped_types) %.%
summarise(area = sum(area),
wg_rate = first(per_capita)) %.%
mutate(prop = area/sum(area)*100) %.%
mutate(pop = (prop/100)*939370) %.%
mutate(waste = (wg_rate*pop)/1000)
我似乎在兜圈子,因为我假设无论您如何分割数据,无论我在哪个分析级别进行分析,产生的总浪费应该是相同的?或者我的代码可能有问题?我简直是斜眼了,我希望有人能为我解释一下这个问题?!
希望...!
提前致谢
马蒂
数据集 = resi_type
structure(list(geo_zone = structure(c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Mainland North",
"Mainland South", "Mainland West", "Mombasa Island"), class = "factor"),
constit = c("likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "nyali", "nyali", "nyali", "likoni",
"likoni", "likoni", "likoni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "kisauni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "kisauni", "kisauni", "nyali", "nyali", "nyali",
"nyali", "kisauni", "kisauni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "kisauni", "kisauni", "nyali",
"nyali", "nyali", "kisauni", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "nyali", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "kisauni", "nyali", "nyali",
"nyali", "kisauni", "kisauni", "kisauni", "kisauni", "kisauni",
"nyali", "nyali", "nyali", "nyali", "kisauni", "kisauni",
"kisauni", "nyali", "nyali", "nyali", "nyali", "kisauni",
"kisauni", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "kisauni", "nyali", "nyali", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "kisauni", "kisauni", "kisauni",
"nyali", "kisauni", "kisauni", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "kisauni", "kisauni", "jomvu",
"jomvu", "jomvu", "nyali", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "changamwe",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"changamwe", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita"), constit_pop = c(166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 185990L, 185990L,
185990L, 166008L, 166008L, 166008L, 166008L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 194065L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 194065L, 194065L, 185990L, 185990L, 185990L,
185990L, 194065L, 194065L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 194065L, 194065L, 194065L, 194065L,
194065L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
194065L, 194065L, 185990L, 185990L, 185990L, 194065L, 194065L,
194065L, 194065L, 194065L, 194065L, 185990L, 194065L, 194065L,
194065L, 194065L, 194065L, 194065L, 194065L, 185990L, 185990L,
185990L, 194065L, 194065L, 194065L, 194065L, 194065L, 185990L,
185990L, 185990L, 185990L, 194065L, 194065L, 194065L, 185990L,
185990L, 185990L, 185990L, 194065L, 194065L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
194065L, 194065L, 194065L, 194065L, 194065L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 194065L, 185990L, 185990L, 194065L,
194065L, 194065L, 194065L, 194065L, 194065L, 194065L, 194065L,
185990L, 194065L, 194065L, 194065L, 194065L, 194065L, 194065L,
194065L, 194065L, 194065L, 194065L, 117487L, 117487L, 117487L,
185990L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 132692L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 132692L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L), grouped_types = structure(c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 1L,
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 3L,
1L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L,
3L, 3L, 1L, 1L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 3L, 3L, 3L, 1L,
1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 1L,
1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L,
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L,
1L, 3L, 1L, 1L, 2L, 3L, 1L, 2L, 1L, 1L, 2L, 2L, 3L, 2L, 2L,
3L, 3L, 3L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 2L, 2L,
1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 3L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L,
2L, 3L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 2L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L,
1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("low",
"medium", "high"), class = "factor"), area = c(191461L, 168928L,
881707L, 43546L, 39139L, 98823L, 22327L, 86611L, 58418L,
60798L, 56243L, 239978L, 4088L, 4184L, 39670L, 32892L, 33701L,
51806L, 52514L, 50464L, 128450L, 36563L, 7722L, 242320L,
4166L, 36158L, 70785L, 43925L, 70614L, 28876L, 40984L, 725320L,
628762L, 78149L, 39327L, 1040985L, 286288L, 324669L, 237726L,
269182L, 389987L, 291501L, 6729L, 322114L, 154042L, 73540L,
421880L, 7814L, 31154L, 52520L, 20187L, 570102L, 143059L,
1032717L, 238886L, 487527L, 412965L, 44010L, 337910L, 103214L,
898486L, 257766L, 2346497L, 40165L, 286848L, 15204L, 14741L,
33759L, 31367L, 10659L, 16966L, 8623L, 35058L, 5673L, 68267L,
705371L, 949977L, 486446L, 294029L, 134848L, 302860L, 33036L,
53250L, 68122L, 62749L, 68404L, 73999L, 132052L, 276413L,
96435L, 93399L, 11964L, 63652L, 43107L, 41734L, 8942L, 106987L,
73466L, 15260L, 34230L, 26790L, 102071L, 66920L, 53821L,
41854L, 112277L, 35686L, 121283L, 442860L, 161307L, 268652L,
99335L, 132137L, 44353L, 12662L, 46855L, 82968L, 107930L,
508985L, 62745L, 938082L, 22117L, 936310L, 94858L, 73017L,
52606L, 6627L, 24497L, 259809L, 232665L, 54735L, 198384L,
625396L, 210216L, 69182L, 122513L, 116519L, 615935L, 183869L,
191174L, 46026L, 45894L, 115477L, 526100L, 620402L, 409119L,
61246L, 50378L, 382692L, 226353L, 30415L, 140897L, 380308L,
278496L, 140738L, 90931L, 309373L, 675839L, 126616L, 28072L,
359436L, 265410L, 61959L, 14987L, 163470L, 63586L, 202991L,
17073L, 153207L, 10945L, 32625L, 6528L, 66156L, 41513L, 71556L,
59877L, 1672723L, 83184L, 127108L, 225371L, 7148L, 55633L,
23490L, 33440L, 31874L, 57616L, 141644L, 4041L, 16330L, 24755L,
21670L, 17487L, 18316L, 2185L, 57400L, 65359L, 2195L, 3315L,
1921L, 149230L, 27015L, 125189L, 8282L, 123498L, 43192L,
28750L, 53547L, 90610L, 111713L, 1389550L, 46932L, 65567L,
34963L, 157530L, 495876L, 35865L, 69871L, 33037L, 15238L,
187162L, 25614L, 222164L, 208159L, 35492L, 74961L, 119257L,
338205L, 157776L, 269244L, 7808L, 81022L, 117785L, 53097L,
88359L, 120146L, 25215L, 5604L, 44767L, 107211L, 48531L,
62563L, 30239L, 39535L, 18375L, 50473L, 118626L, 6583L, 25521L,
83484L, 37988L, 142569L, 60286L, 29201L, 21472L, 45229L,
218326L, 136081L, 72108L, 44545L, 419200L, 118830L, 293110L,
28082L, 34409L, 28544L, 70845L, 883447L, 50206L, 501740L,
292555L, 11381L, 760137L, 46906L, 45658L, 12068L, 31536L,
26448L, 66957L, 60306L, 63473L, 92440L, 33038L, 40690L, 4358L,
15420L, 35874L, 241844L, 103774L, 231520L, 55938L, 4980L,
15129L, 71766L, 15052L, 51907L, 58131L, 11222L, 84234L, 18250L,
55818L, 354058L, 426951L, 78515L, 69888L, 61814L, 63906L,
10022L, 12016L, 17379L, 41985L, 52158L, 26534L, 6521L, 24839L,
52534L, 6259L, 12217L, 27762L, 21291L, 13541L, 49876L, 10837L,
452375L, 71490L, 51393L, 138363L, 141327L, 22491L, 14763L,
24576L, 49290L, 103754L, 10742L, 85254L, 13606L, 3300L, 18141L,
16879L, 35271L, 82284L, 695830L, 4878L, 18671L, 2561L, 21473L,
31871L, 5064L, 37972L, 11353L, 13481L, 60994L, 10852L, 4068L,
15985L, 1380L, 90067L, 182569L, 111214L, 373818L, 29520L,
92995L, 15263L, 51544L, 14380L, 62169L, 31736L, 33060L, 34099L,
22353L, 3371L, 4004L, 130913L, 6064L, 35123L, 30165L, 32239L,
27727L, 65874L, 17705L, 15342L, 27021L, 32604L, 48038L, 43721L,
21798L, 23312L, 44106L, 34939L, 16593L, 5387L, 12524L, 88162L,
18039L, 475786L, 5763L, 8036L, 79110L, 9284L, 38040L, 63066L,
4939L, 5665L, 47305L, 47126L, 32030L, 10339L, 33543L, 6560L,
119694L, 45586L, 62892L, 56458L, 20836L, 38241L, 132671L,
4101L, 3229L, 32904L, 6779L, 21641L, 95824L, 182038L, 33146L,
11859L, 17811L, 19589L, 28067L, 92553L, 17485L, 25332L, 39660L,
4862L, 13969L, 18905L, 37109L, 37983L, 21651L), per_capita = c(0.55,
0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.89, 0.89,
0.55, 0.55, 0.55, 0.55, 0.55, 1.33, 1.33, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 1.33, 0.55, 1.33, 1.33, 1.33, 1.33, 1.33,
0.55, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 1.33, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.89,
0.55, 0.55, 0.55, 0.55, 1.33, 1.33, 1.33, 0.55, 0.55, 0.55,
0.55, 1.33, 0.55, 1.33, 1.33, 0.55, 1.33, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 0.55, 1.33, 1.33, 1.33, 1.33, 1.33, 0.55,
0.55, 1.33, 1.33, 0.55, 0.89, 0.55, 0.55, 0.55, 1.33, 1.33,
1.33, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 1.33, 0.55, 0.55,
0.55, 0.55, 0.89, 0.89, 1.33, 1.33, 0.55, 0.55, 0.55, 0.55,
0.89, 0.89, 1.33, 0.89, 0.89, 1.33, 1.33, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 1.33, 1.33, 0.89, 0.89, 0.89, 0.55, 0.55,
0.55, 0.89, 0.55, 0.55, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55,
0.55, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.89, 0.55,
0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.89, 1.33, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.89, 0.55, 0.55, 0.89,
0.89, 0.89, 0.55, 1.33, 0.55, 0.55, 0.89, 1.33, 0.55, 0.89,
0.55, 0.55, 0.89, 0.89, 1.33, 0.89, 0.89, 1.33, 1.33, 1.33,
0.55, 0.55, 0.89, 0.89, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55,
1.33, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.89, 0.55,
0.55, 0.55, 0.55, 0.55, 1.33, 0.89, 0.89, 0.55, 0.55, 0.55,
0.55, 0.89, 0.89, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 1.33, 0.55, 0.55, 0.55,
0.55, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55, 0.89, 1.33,
0.55, 0.55, 0.55, 0.55, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55,
0.55, 0.55, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55, 0.55, 0.89,
0.55, 0.55, 0.89, 0.89, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55,
0.89, 0.89, 0.89, 1.33, 0.89, 0.55, 0.55, 0.55, 0.89, 0.89,
0.89, 0.89, 0.89, 1.33, 1.33, 1.33, 0.89, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 1.33, 1.33, 1.33, 0.89, 0.89, 0.89, 0.55,
0.55, 0.89, 0.55, 0.55, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.89, 0.89,
0.89, 0.89, 0.89, 0.55, 0.89, 0.89, 0.55, 0.89, 0.89, 0.89,
0.55, 0.89, 0.55, 0.89, 0.89, 0.89, 0.55, 0.55, 1.33, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
1.33, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.55, 0.89, 0.89, 0.89, 0.89, 0.89)), .Names = c("geo_zone",
"constit", "constit_pop", "grouped_types", "area", "per_capita"
), class = "data.frame", row.names = c(NA, -437L))
在不加载数据进行检查的情况下,区别似乎在于在第一个版本中,浪费被定义为(在所有突变之后):
area / sum(area) * constit_pop * wg_rate / 1000
而第二个是:
area / sum(area) * 939370 * wg_rate / 1000
在第一个版本中,您似乎将百分比应用于不完整的总体,这可能是您得到较低数字的原因。
更新 1
稍微研究了一下您的数据,我相信 757 数字更准确。您将 area
值视为实际大小,并使用它来划分位置。由于您的面积比例总和为 1,并且您希望将该百分比应用于分配人口,因此您必须将其应用于 总 人口,而不是选区的总人口,即小于或等于总数。这就是为什么您得到的答案小于 757。
我建议在纸上画出如何根据您拥有的数据计算一个区域的总废物量,并使用它来创建一列实际(或预期)废物。一旦每个区域都有浪费,用 dplyr
来总结它应该是一件轻而易举的事。如果我正确理解您的问题,它可能类似于以下内容。可能有更优雅的方法来做到这一点,但我希望以下内容应该相对清楚。
new_resi <- tbl_df(resi_type)
total_pop <- group_by(new_resi, constit_pop) %>% summarize() %>% sum()
new_resi <- new_resi %>% mutate(prop = area / sum(area),
area_pop = total_pop * prop, waste = per_capita * area_pop / 1000)
现在你应该可以在你想要的任何轴上进行聚合了:
> sum(new_resi$waste)
[1] 757.8447
> new_resi %>% group_by(constit) %>% summarize(sum(waste))
Source: local data frame [6 x 2]
constit sum(waste)
1 changamwe 43.77569
2 jomvu 58.32272
3 kisauni 177.14872
4 likoni 122.57831
5 mvita 102.38562
6 nyali 253.63362
> new_resi %>% group_by(geo_zone) %>% summarize(sum(waste))
Source: local data frame [4 x 2]
geo_zone sum(waste)
1 Mainland North 430.7823
2 Mainland South 122.5783
3 Mainland West 102.0984
4 Mombasa Island 102.3856
> 430.7823+122.5783+102.0984+102.3856
[1] 757.8446
> new_resi %>% group_by(grouped_types) %>% summarize(sum(waste))
Source: local data frame [3 x 2]
grouped_types sum(waste)
1 low 276.8951
2 medium 199.9059
3 high 281.0437
我整天都在尝试使用 dplyr 在 R 中总结数据集,但似乎 a) 得到不一致的结果,或者 b) 停止思考!
我的数据集'resi_type(见下文)捕获了一个城市的人口数字和垃圾产生率。我试图从三个层面总结这些数字: geo_zone、选区和社会经济领域(低、中、高)。这些是按大小顺序排列的,例如有 437 个单独的区域属于三个社会经济 类 之一;这些都只在六个选区之一;六个选区位于四个 geo_zone 之一。
我对 dplyr 的速度和易用性印象深刻,并一直使用它来总结我的数据并添加一些计算值。例如,在选区级别汇总整个数据集:
constit_sum <-
resi_type %.%
group_by(constit, grouped_types) %.%
summarise(area = sum(area),
constit_pop = first(constit_pop),
wg_rate = first(per_capita)) %.%
mutate(prop = area/sum(area)*100) %.%
mutate(pop = (prop/100)*constit_pop) %.%
mutate(waste = (wg_rate*pop)/1000)
这对我来说很不错 table。如果我对这些行求和,我的总人口为 939,370,总 'waste' 产量为 744.3238(吨)。
现在,当我尝试在县级生成摘要时,我一直在玩两段代码。当我跨行求和时,这个产生与上面相同的结果,例如总人口 939,370,总 'waste' 产量 744.3238(吨):
county_sum <-
constit_sum %.%
group_by(grouped_types) %.%
summarise(area = sum(area),
waste = sum(waste))
但是,以下代码块是解决同一问题的略有不同的方法,会产生不同的结果,例如总人口 939,370,总产量 'waste' 757.8447(吨)
county_sum2 <-
resi_type %.%
group_by(grouped_types) %.%
summarise(area = sum(area),
wg_rate = first(per_capita)) %.%
mutate(prop = area/sum(area)*100) %.%
mutate(pop = (prop/100)*939370) %.%
mutate(waste = (wg_rate*pop)/1000)
我似乎在兜圈子,因为我假设无论您如何分割数据,无论我在哪个分析级别进行分析,产生的总浪费应该是相同的?或者我的代码可能有问题?我简直是斜眼了,我希望有人能为我解释一下这个问题?!
希望...!
提前致谢
马蒂
数据集 = resi_type
structure(list(geo_zone = structure(c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Mainland North",
"Mainland South", "Mainland West", "Mombasa Island"), class = "factor"),
constit = c("likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "likoni", "likoni", "likoni", "likoni",
"likoni", "likoni", "nyali", "nyali", "nyali", "likoni",
"likoni", "likoni", "likoni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "kisauni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "kisauni", "kisauni", "nyali", "nyali", "nyali",
"nyali", "kisauni", "kisauni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "kisauni", "kisauni", "nyali",
"nyali", "nyali", "kisauni", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "nyali", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "kisauni", "nyali", "nyali",
"nyali", "kisauni", "kisauni", "kisauni", "kisauni", "kisauni",
"nyali", "nyali", "nyali", "nyali", "kisauni", "kisauni",
"kisauni", "nyali", "nyali", "nyali", "nyali", "kisauni",
"kisauni", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "nyali", "nyali", "nyali", "nyali", "nyali", "nyali",
"nyali", "kisauni", "nyali", "nyali", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "kisauni", "kisauni", "kisauni",
"nyali", "kisauni", "kisauni", "kisauni", "kisauni", "kisauni",
"kisauni", "kisauni", "kisauni", "kisauni", "kisauni", "jomvu",
"jomvu", "jomvu", "nyali", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "changamwe",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"changamwe", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu", "jomvu",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "changamwe", "changamwe", "changamwe",
"changamwe", "changamwe", "changamwe", "changamwe", "changamwe",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita", "mvita", "mvita", "mvita",
"mvita", "mvita", "mvita", "mvita"), constit_pop = c(166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 166008L, 166008L,
166008L, 166008L, 166008L, 166008L, 166008L, 185990L, 185990L,
185990L, 166008L, 166008L, 166008L, 166008L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 194065L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 194065L, 194065L, 185990L, 185990L, 185990L,
185990L, 194065L, 194065L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 194065L, 194065L, 194065L, 194065L,
194065L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
194065L, 194065L, 185990L, 185990L, 185990L, 194065L, 194065L,
194065L, 194065L, 194065L, 194065L, 185990L, 194065L, 194065L,
194065L, 194065L, 194065L, 194065L, 194065L, 185990L, 185990L,
185990L, 194065L, 194065L, 194065L, 194065L, 194065L, 185990L,
185990L, 185990L, 185990L, 194065L, 194065L, 194065L, 185990L,
185990L, 185990L, 185990L, 194065L, 194065L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
194065L, 194065L, 194065L, 194065L, 194065L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 185990L, 185990L, 185990L, 185990L,
185990L, 185990L, 185990L, 194065L, 185990L, 185990L, 194065L,
194065L, 194065L, 194065L, 194065L, 194065L, 194065L, 194065L,
185990L, 194065L, 194065L, 194065L, 194065L, 194065L, 194065L,
194065L, 194065L, 194065L, 194065L, 117487L, 117487L, 117487L,
185990L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 132692L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 132692L, 117487L, 117487L,
117487L, 117487L, 117487L, 117487L, 117487L, 117487L, 117487L,
117487L, 117487L, 117487L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 132692L, 132692L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 132692L, 132692L, 132692L,
132692L, 132692L, 132692L, 132692L, 132692L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L, 143128L, 143128L, 143128L, 143128L, 143128L,
143128L, 143128L), grouped_types = structure(c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 1L,
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 3L,
1L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L,
3L, 3L, 1L, 1L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 3L, 3L, 3L, 1L,
1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 1L,
1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L,
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L,
1L, 3L, 1L, 1L, 2L, 3L, 1L, 2L, 1L, 1L, 2L, 2L, 3L, 2L, 2L,
3L, 3L, 3L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 2L, 2L,
1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 3L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L,
2L, 3L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 2L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L,
1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("low",
"medium", "high"), class = "factor"), area = c(191461L, 168928L,
881707L, 43546L, 39139L, 98823L, 22327L, 86611L, 58418L,
60798L, 56243L, 239978L, 4088L, 4184L, 39670L, 32892L, 33701L,
51806L, 52514L, 50464L, 128450L, 36563L, 7722L, 242320L,
4166L, 36158L, 70785L, 43925L, 70614L, 28876L, 40984L, 725320L,
628762L, 78149L, 39327L, 1040985L, 286288L, 324669L, 237726L,
269182L, 389987L, 291501L, 6729L, 322114L, 154042L, 73540L,
421880L, 7814L, 31154L, 52520L, 20187L, 570102L, 143059L,
1032717L, 238886L, 487527L, 412965L, 44010L, 337910L, 103214L,
898486L, 257766L, 2346497L, 40165L, 286848L, 15204L, 14741L,
33759L, 31367L, 10659L, 16966L, 8623L, 35058L, 5673L, 68267L,
705371L, 949977L, 486446L, 294029L, 134848L, 302860L, 33036L,
53250L, 68122L, 62749L, 68404L, 73999L, 132052L, 276413L,
96435L, 93399L, 11964L, 63652L, 43107L, 41734L, 8942L, 106987L,
73466L, 15260L, 34230L, 26790L, 102071L, 66920L, 53821L,
41854L, 112277L, 35686L, 121283L, 442860L, 161307L, 268652L,
99335L, 132137L, 44353L, 12662L, 46855L, 82968L, 107930L,
508985L, 62745L, 938082L, 22117L, 936310L, 94858L, 73017L,
52606L, 6627L, 24497L, 259809L, 232665L, 54735L, 198384L,
625396L, 210216L, 69182L, 122513L, 116519L, 615935L, 183869L,
191174L, 46026L, 45894L, 115477L, 526100L, 620402L, 409119L,
61246L, 50378L, 382692L, 226353L, 30415L, 140897L, 380308L,
278496L, 140738L, 90931L, 309373L, 675839L, 126616L, 28072L,
359436L, 265410L, 61959L, 14987L, 163470L, 63586L, 202991L,
17073L, 153207L, 10945L, 32625L, 6528L, 66156L, 41513L, 71556L,
59877L, 1672723L, 83184L, 127108L, 225371L, 7148L, 55633L,
23490L, 33440L, 31874L, 57616L, 141644L, 4041L, 16330L, 24755L,
21670L, 17487L, 18316L, 2185L, 57400L, 65359L, 2195L, 3315L,
1921L, 149230L, 27015L, 125189L, 8282L, 123498L, 43192L,
28750L, 53547L, 90610L, 111713L, 1389550L, 46932L, 65567L,
34963L, 157530L, 495876L, 35865L, 69871L, 33037L, 15238L,
187162L, 25614L, 222164L, 208159L, 35492L, 74961L, 119257L,
338205L, 157776L, 269244L, 7808L, 81022L, 117785L, 53097L,
88359L, 120146L, 25215L, 5604L, 44767L, 107211L, 48531L,
62563L, 30239L, 39535L, 18375L, 50473L, 118626L, 6583L, 25521L,
83484L, 37988L, 142569L, 60286L, 29201L, 21472L, 45229L,
218326L, 136081L, 72108L, 44545L, 419200L, 118830L, 293110L,
28082L, 34409L, 28544L, 70845L, 883447L, 50206L, 501740L,
292555L, 11381L, 760137L, 46906L, 45658L, 12068L, 31536L,
26448L, 66957L, 60306L, 63473L, 92440L, 33038L, 40690L, 4358L,
15420L, 35874L, 241844L, 103774L, 231520L, 55938L, 4980L,
15129L, 71766L, 15052L, 51907L, 58131L, 11222L, 84234L, 18250L,
55818L, 354058L, 426951L, 78515L, 69888L, 61814L, 63906L,
10022L, 12016L, 17379L, 41985L, 52158L, 26534L, 6521L, 24839L,
52534L, 6259L, 12217L, 27762L, 21291L, 13541L, 49876L, 10837L,
452375L, 71490L, 51393L, 138363L, 141327L, 22491L, 14763L,
24576L, 49290L, 103754L, 10742L, 85254L, 13606L, 3300L, 18141L,
16879L, 35271L, 82284L, 695830L, 4878L, 18671L, 2561L, 21473L,
31871L, 5064L, 37972L, 11353L, 13481L, 60994L, 10852L, 4068L,
15985L, 1380L, 90067L, 182569L, 111214L, 373818L, 29520L,
92995L, 15263L, 51544L, 14380L, 62169L, 31736L, 33060L, 34099L,
22353L, 3371L, 4004L, 130913L, 6064L, 35123L, 30165L, 32239L,
27727L, 65874L, 17705L, 15342L, 27021L, 32604L, 48038L, 43721L,
21798L, 23312L, 44106L, 34939L, 16593L, 5387L, 12524L, 88162L,
18039L, 475786L, 5763L, 8036L, 79110L, 9284L, 38040L, 63066L,
4939L, 5665L, 47305L, 47126L, 32030L, 10339L, 33543L, 6560L,
119694L, 45586L, 62892L, 56458L, 20836L, 38241L, 132671L,
4101L, 3229L, 32904L, 6779L, 21641L, 95824L, 182038L, 33146L,
11859L, 17811L, 19589L, 28067L, 92553L, 17485L, 25332L, 39660L,
4862L, 13969L, 18905L, 37109L, 37983L, 21651L), per_capita = c(0.55,
0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.89, 0.89,
0.55, 0.55, 0.55, 0.55, 0.55, 1.33, 1.33, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 1.33, 0.55, 1.33, 1.33, 1.33, 1.33, 1.33,
0.55, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 1.33, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.89,
0.55, 0.55, 0.55, 0.55, 1.33, 1.33, 1.33, 0.55, 0.55, 0.55,
0.55, 1.33, 0.55, 1.33, 1.33, 0.55, 1.33, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 0.55, 1.33, 1.33, 1.33, 1.33, 1.33, 0.55,
0.55, 1.33, 1.33, 0.55, 0.89, 0.55, 0.55, 0.55, 1.33, 1.33,
1.33, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 1.33, 0.55, 0.55,
0.55, 0.55, 0.89, 0.89, 1.33, 1.33, 0.55, 0.55, 0.55, 0.55,
0.89, 0.89, 1.33, 0.89, 0.89, 1.33, 1.33, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 1.33, 1.33, 0.89, 0.89, 0.89, 0.55, 0.55,
0.55, 0.89, 0.55, 0.55, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55,
0.55, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.89, 0.55,
0.55, 0.55, 0.89, 0.55, 0.55, 0.55, 0.89, 1.33, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.89, 0.55, 0.55, 0.89,
0.89, 0.89, 0.55, 1.33, 0.55, 0.55, 0.89, 1.33, 0.55, 0.89,
0.55, 0.55, 0.89, 0.89, 1.33, 0.89, 0.89, 1.33, 1.33, 1.33,
0.55, 0.55, 0.89, 0.89, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55,
1.33, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.89, 0.55,
0.55, 0.55, 0.55, 0.55, 1.33, 0.89, 0.89, 0.55, 0.55, 0.55,
0.55, 0.89, 0.89, 0.55, 0.89, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55,
0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 1.33, 0.55, 0.55, 0.55,
0.55, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55, 0.89, 1.33,
0.55, 0.55, 0.55, 0.55, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55,
0.55, 0.55, 0.89, 0.89, 0.89, 0.55, 0.55, 0.55, 0.55, 0.89,
0.55, 0.55, 0.89, 0.89, 0.55, 0.55, 0.89, 0.55, 0.55, 0.55,
0.89, 0.89, 0.89, 1.33, 0.89, 0.55, 0.55, 0.55, 0.89, 0.89,
0.89, 0.89, 0.89, 1.33, 1.33, 1.33, 0.89, 1.33, 1.33, 1.33,
1.33, 1.33, 1.33, 1.33, 1.33, 1.33, 0.89, 0.89, 0.89, 0.55,
0.55, 0.89, 0.55, 0.55, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.55,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.55, 0.89, 0.89,
0.89, 0.89, 0.89, 0.55, 0.89, 0.89, 0.55, 0.89, 0.89, 0.89,
0.55, 0.89, 0.55, 0.89, 0.89, 0.89, 0.55, 0.55, 1.33, 0.89,
0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
1.33, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89, 0.89,
0.55, 0.89, 0.89, 0.89, 0.89, 0.89)), .Names = c("geo_zone",
"constit", "constit_pop", "grouped_types", "area", "per_capita"
), class = "data.frame", row.names = c(NA, -437L))
在不加载数据进行检查的情况下,区别似乎在于在第一个版本中,浪费被定义为(在所有突变之后):
area / sum(area) * constit_pop * wg_rate / 1000
而第二个是:
area / sum(area) * 939370 * wg_rate / 1000
在第一个版本中,您似乎将百分比应用于不完整的总体,这可能是您得到较低数字的原因。
更新 1
稍微研究了一下您的数据,我相信 757 数字更准确。您将 area
值视为实际大小,并使用它来划分位置。由于您的面积比例总和为 1,并且您希望将该百分比应用于分配人口,因此您必须将其应用于 总 人口,而不是选区的总人口,即小于或等于总数。这就是为什么您得到的答案小于 757。
我建议在纸上画出如何根据您拥有的数据计算一个区域的总废物量,并使用它来创建一列实际(或预期)废物。一旦每个区域都有浪费,用 dplyr
来总结它应该是一件轻而易举的事。如果我正确理解您的问题,它可能类似于以下内容。可能有更优雅的方法来做到这一点,但我希望以下内容应该相对清楚。
new_resi <- tbl_df(resi_type)
total_pop <- group_by(new_resi, constit_pop) %>% summarize() %>% sum()
new_resi <- new_resi %>% mutate(prop = area / sum(area),
area_pop = total_pop * prop, waste = per_capita * area_pop / 1000)
现在你应该可以在你想要的任何轴上进行聚合了:
> sum(new_resi$waste)
[1] 757.8447
> new_resi %>% group_by(constit) %>% summarize(sum(waste))
Source: local data frame [6 x 2]
constit sum(waste)
1 changamwe 43.77569
2 jomvu 58.32272
3 kisauni 177.14872
4 likoni 122.57831
5 mvita 102.38562
6 nyali 253.63362
> new_resi %>% group_by(geo_zone) %>% summarize(sum(waste))
Source: local data frame [4 x 2]
geo_zone sum(waste)
1 Mainland North 430.7823
2 Mainland South 122.5783
3 Mainland West 102.0984
4 Mombasa Island 102.3856
> 430.7823+122.5783+102.0984+102.3856
[1] 757.8446
> new_resi %>% group_by(grouped_types) %>% summarize(sum(waste))
Source: local data frame [3 x 2]
grouped_types sum(waste)
1 low 276.8951
2 medium 199.9059
3 high 281.0437