【发布时间】:2016-09-30 12:01:11
【问题描述】:
我拥有英国地方当局级别的 4G 移动覆盖范围,占覆盖地理区域的百分比(大约 200 个区域)。我想分解这些数据,以便可以处理大约 9000 个较低级别的邮政编码部门。
对我来说,最合适的方式是首先将 4G 地理覆盖范围分配到人口最稠密的地区,因为这最能代表移动运营商在市场上的投资方式。人口最少的地区最终将没有覆盖。但是,我正在为如何在 R 中做到这一点而苦苦挣扎。
我有一个看起来像这样的邮政编码扇区数据的数据框(我在这里使用了假设数据):
Name pcd.sect pop area pop.dens rank
Cambridge 1 5546 0.6 8341 1
Cambridge 2 7153 1.1 5970 2
Cambridge 3 5621 2.3 5289 3
Cambridge 4 10403 4.3 4361 4
Cambridge 5 14796 4.2 3495 5
...
然后,我将汇总的地方当局数据放在每一行(添加右三列):
Name pcd.sect pop area pop.dens rank LA.4G LA.area LA.4G(km2)
Cambridge 1 5546 0.6 8341 1 58 140 82
Cambridge 2 7153 1.1 5970 2 58 140 82
Cambridge 3 5621 2.3 5289 3 58 140 82
Cambridge 4 10403 4.3 4361 4 58 140 82
Cambridge 5 14796 4.2 3495 5 58 140 82
...
我不得不缩短标题,所以让我更详细地解释一下:
- 名称 - 地方当局名称
- pcd.sector - 邮政编码扇区(所以是低级单位)
- pop - 邮政编码部门的人口
- area - 邮政编码扇区的表面积,以 km2 为单位
- pop.dens - 是邮政编码部门的人口密度,以每平方公里的人数为单位
- rank - 基于每个地方当局内人口密度的邮政编码部门排名
- LA.4G - 地方当局的 4G 覆盖率百分比
- LA.area - 每个地方当局区域列的总和
- LA.4G(km2) - 每个地方当局内具有 4G 覆盖范围的 km2 数量
以剑桥为例,整个地方当局的 4G 覆盖率为 58%。然后我想分解这个数字以实现各个邮政编码部门的 4G 覆盖。
理想情况下,数据最终会如下所示,并为邮政编码部门覆盖范围增加一列:
Name pcd.sect ... pcd.sector.coverage (%)
Cambridge 1 ... 100
Cambridge 2 ... 100
Cambridge 3 ... 100
Cambridge 4 ... 34
Cambridge 5 ... 0
... ... ... ...
如何让 R 根据区域列将这 82 平方公里(58% 的地理覆盖率)分配给新列中的邮政编码扇区,但一旦达到最大覆盖率 82 平方公里(58% 的地理覆盖率)就停止覆盖)?
【问题讨论】:
-
为什么扇区 4 和 5 不是 100%?他们都有 82 平方公里。
-
LA.4G、LA.area 和 LA.4G(km2) 都是地方级的,为了简单起见,我只是把它们放在每一行。这里使用的数字是说明性的,但结构是正确的。
-
请编辑您的答案并包括
pcd.sector.coverage的计算。我想不通,但您的问题可以使用ifelse()语句解决。 -
嗨,Jimbou,我现在已经编辑了答案,以便更清楚哪些数据适用于低级和高级单元。感谢关于“ifelse()”的建议