【发布时间】:2017-11-29 17:43:22
【问题描述】:
我正在使用空间多边形数据框。 数据可以在这里下载: http://geoportal.statistics.gov.uk/datasets/lower-layer-super-output-areas-december-2011-super-generalised-clipped-boundaries-in-england-and-wales
这包含英格兰和威尔士的低层输出区域 (lsoa)。
我需要对数据框进行子集化,以便仅保留 london lsoa11cd 的多边形。
我有一份伦敦的 lsoa11cd 清单。 这些在 E01000001 和 E01004765 之间。我不确定如何继续对空间多边形进行子集化(参见附图)。在下面找到一个不起作用的尝试。
london <- shapefile[substr(shapefile@data$lsoa11cd, -7 , -1) <= 1004765, ]
london <- london[substr(london@data$lsoa11cd, -7 , -1) >= 1000001, ]
【问题讨论】:
-
substr不适用于负开始和停止(至少不是base::substr)。请改用substr(..., 2, 8)。结果将是一个字符串,在与数字比较之前转换为数字。 -
一般来说,我会推荐在发布之前尝试小测试用例的调试策略。我刚刚做了
x = "E01000001"然后substr(x, -7, -1)。它没有用。然后当我得到substr(x, 2, 8)时,我尝试了substr(x, 2, 8) > 1,它也没有工作,所以我得到了as.integer(substr(x, 2, 8)) > 1,它按预期工作。 -
我试过了。我使用 as.numeric(substr(shapefile, 2,8))
-
你仍然需要
shapefile@data$lsoa11cd,而不仅仅是shapefile。并尝试仅对@data进行子集化,而不是其他内容。如果您发布最少位数据,我们可以共享代码。 -
谢谢格雷戈尔。你很善良。数据可以在这里下载:geoportal.statistics.gov.uk/datasets/…你需要下载文件并使用readOGR将shapefile导入R
标签: r