我有两个xy坐标数据集。第一个有xy坐标加上一个带有我的因子水平的标签列。我叫data.frame
qq
,它看起来像这样:按R中的因子计算多边形内的点数
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))
如果我使用in.out
功能从mgcv
包,我得到有些我想要的东西。
这种方法的主要问题是我的'多边形'未关闭,也不会被解释为2个多边形。该包建议在两者之间使用一个NA行,但我宁愿使用我的标记列,因为我将尝试在我的标记因子中使用多于两个级别,即超过2个多边形)。我的最终目标是创建一个每个点内的点数的表格。
我建议将您的数据帧转换为适当的*空间对象。然后,您将可以轻松地使用专门的空间操作。 – lbusett
我不确定你真正想要什么,但是我在库(recexcavAAR)中实现了一个简单的“Point-in-Polygon”函数:'' )' – nevrome
这与in.out的工作方式相同,我如何以平面方式制作多边形? –