如何根据R中的网格索引坐标数据?

如何根据R中的网格索引坐标数据?,r,indexing,grid,coordinates,partitioning,R,Indexing,Grid,Coordinates,Partitioning,我的坐标数据(x坐标和y坐标)的比例介于: Xpos:27-1367nm,Ypos:67-1014nm。数据集由大约2500-3500个数据点组成。 以下是此类数据集的标题: XPos YPos 1 29 211 2 31 609 3 33 1001 4 35 508 5 37 424 6 39 584 7 40 378 8 41 204 9 41 444 10 41 872 ... [![绘制数据][1][1

我的坐标数据(x坐标和y坐标)的比例介于: Xpos:27-1367nm,Ypos:67-1014nm。数据集由大约2500-3500个数据点组成。 以下是此类数据集的标题:

   XPos YPos
1    29  211
2    31  609
3    33 1001
4    35  508
5    37  424
6    39  584
7    40  378
8    41  204
9    41  444
10   41  872 
...
[![绘制数据][1][1]

现在,我想通过在R中的数据上应用由大小相等的象限组成的网格来索引数据点。结果应该是一个新列“grid_index”,其中包含数据点所在的唯一象限ID(见图)。有没有一个简单的方法可以做到这一点?我想尝试不同的网格单元大小来划分数据,例如大小为50nm、100nm、200nm或400nm的象限和大小为100nm x 200nm或50nm x100nm的矩形

[![Grid for data pint indexing][2]][2]

[![每个网格象限应具有唯一的ID][3]][3]


我将非常感谢您的帮助。

这里有一个使用
findInterval
的方法:

首先建立一个具有适当数量索引的矩阵:

pos.matrix <- matrix(1:35,byrow = TRUE, nrow = 5)
pos.matrix
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    2    3    4    5    6    7
[2,]    8    9   10   11   12   13   14
[3,]   15   16   17   18   19   20   21
[4,]   22   23   24   25   26   27   28
[5,]   29   30   31   32   33   34   35

样本数据

set.seed(3)
data <- data.frame(XPos = runif(1000,0,1400), YPos = runif(1000,0,1000))
set.seed(3)

数据问题是他的数据本机不是矩阵格式。因此,他需要将其数据转换为一个矩阵,该矩阵将在其中引入0,这可能会使您的答案无效,除非您能够找到一种方法来调整解决方案,使其适用于2列的数据帧。它当前适用于2列的
data.frame
。请参阅示例数据部分。嗨,伊恩!非常感谢你。我用我的数据试过了,效果很好。我对R和编码比较陌生,我正在努力理解您提供的解决方案。你能解释一下“MARGIN=1”这个参数的作用吗?谢谢大家!<代码>应用
沿矩阵、数组或data.frame的边距应用函数。因为
cbind
生成一个2列矩阵,所以我们希望将函数应用于该矩阵的每一行。
1
边距是每行的边距,
2
边距是每列的边距。实际上,您可以直接将
pos.matrix
子集,但我认为这更容易理解。
set.seed(3)
data <- data.frame(XPos = runif(1000,0,1400), YPos = runif(1000,0,1000))