【发布时间】:2016-11-06 23:25:06
【问题描述】:
我有两个 xy 坐标数据集。第一个具有 xy 坐标加上带有我的因子水平的标签列。我打电话给data.frameqq,它看起来像这样:
structure(list(x = c(5109, 5128, 5137, 5185, 5258, 5324, 5387,
5343, 5331, 5347, 5300, 5180, 4109, 4082, 4091, 4139, 4212, 4279,
4291, 4297, 4285, 4301, 4254, 4181), y = c(1692, 1881, 2070,
2119, 2144, 2065, 1987, 1813, 1705, 1649, 1631, 1654, 1847, 2015,
2204, 2253, 2278, 2282, 2166, 1947, 1839, 1783, 1765, 1783),
tag = c("MPN_right", "MPN_right", "MPN_right", "MPN_right",
"MPN_right", "MPN_right", "MPN_right", "MPN_right", "MPN_right",
"MPN_right", "MPN_right", "MPN_right", "MPN_left", "MPN_left",
"MPN_left", "MPN_left", "MPN_left", "MPN_left", "MPN_left",
"MPN_left", "MPN_left", "MPN_left", "MPN_left", "MPN_left"
)), .Names = c("x", "y", "tag"), row.names = c(NA, -24L), class = "data.frame")
我使用qq xy 为另一个生成随机数据,这意味着sd 很大。
set.seed(123)
my_points=data.frame(x=rnorm(n =1000,mean=mean(qq$x),sd=1000),
y=rnorm(n=1000,mean=mean(qq$y),sd=1000))
如果我使用 mgcv 包中的 in.out 函数,我会得到一些我想要的。
这种方法的主要问题是我的“多边形”没有闭合,也不会被解释为 2 个多边形。该软件包建议在两者之间使用一个 NA 行,但我宁愿使用我的标签列,因为我将尝试在我的标签因子中使用超过 2 个级别,即超过 2 个多边形)。我的最终目标是制作一个包含每个点数的表格。
【问题讨论】:
-
我建议将您的数据框转换为适当的 *Spatial 对象。然后,您将能够轻松地使用专门的空间操作。
-
我不确定你真正想要什么,但我在
library(recexcavAAR)中实现了一个简单的“Point-in-Polygon”函数:pnpmulti(qq$x, qq$y, my_points$x, my_points$y) -
in.out 的工作方式相同,如何逐级制作多边形?