将点分配给 r 中的网格
assign points to a grid in r
我有一个(希望如此)简单的任务需要完成,但到目前为止我还没有能够在任何现有线程中找到我的答案。
比方说,我有一组坐标对应于 10x10 网格的单元格中心。每个网格单元格都有一个唯一标识符(a、b、c、d)。
x y
a 5 5
b 5 15
c 5 25
d 5 35
e 15 5
f 15 15
(以此类推)
我还有一组坐标“站”,对应于位于该网格某处的一些空间点
x y
A 7.5 12
B 33.2 21
C 12 16.6
(以此类推)
我想创建一个 table 来告诉我每个“站点”(A、B、C)属于哪个网格单元(a、b、c)。
在 R 中有(相对)简单的方法来做到这一点吗?
Example image
复制有问题的数据。如果这些已经作为 data.frames 存在,您需要 运行 以下内容才能使我的代码正常工作:setDT(df)
setDT(stations)
(将它们转换为 data.table class)
library(data.table)
df <- fread("
grid x y
a 5 5
b 5 15
c 5 25
d 5 35
e 15 5
f 15 15
")
stations <- fread("
station x y
A 7.5 12
B 33.2 21
C 12 16.6
")
用每个网格的边界制作数据table
bounds <- df[, .(xl = x - 5, xu = x + 5
, yl = y - 5, yu = y + 5
, grid )]
bounds
# xl xu yl yu grid
# 1: 0 10 0 10 a
# 2: 0 10 10 20 b
# 3: 0 10 20 30 c
# 4: 0 10 30 40 d
# 5: 10 20 0 10 e
# 6: 10 20 10 20 f
加入bounds
和stations
out <- bounds[stations, .(station, grid),
on = .(xl <= x, xu >= x, yl <= y, yu >= y)]
out
# station grid
# 1: A b
# 2: B <NA>
# 3: C f
我有一个(希望如此)简单的任务需要完成,但到目前为止我还没有能够在任何现有线程中找到我的答案。
比方说,我有一组坐标对应于 10x10 网格的单元格中心。每个网格单元格都有一个唯一标识符(a、b、c、d)。
x y
a 5 5
b 5 15
c 5 25
d 5 35
e 15 5
f 15 15
(以此类推)
我还有一组坐标“站”,对应于位于该网格某处的一些空间点
x y
A 7.5 12
B 33.2 21
C 12 16.6
(以此类推)
我想创建一个 table 来告诉我每个“站点”(A、B、C)属于哪个网格单元(a、b、c)。
在 R 中有(相对)简单的方法来做到这一点吗?
Example image
复制有问题的数据。如果这些已经作为 data.frames 存在,您需要 运行 以下内容才能使我的代码正常工作:setDT(df)
setDT(stations)
(将它们转换为 data.table class)
library(data.table)
df <- fread("
grid x y
a 5 5
b 5 15
c 5 25
d 5 35
e 15 5
f 15 15
")
stations <- fread("
station x y
A 7.5 12
B 33.2 21
C 12 16.6
")
用每个网格的边界制作数据table
bounds <- df[, .(xl = x - 5, xu = x + 5
, yl = y - 5, yu = y + 5
, grid )]
bounds
# xl xu yl yu grid
# 1: 0 10 0 10 a
# 2: 0 10 10 20 b
# 3: 0 10 20 30 c
# 4: 0 10 30 40 d
# 5: 10 20 0 10 e
# 6: 10 20 10 20 f
加入bounds
和stations
out <- bounds[stations, .(station, grid),
on = .(xl <= x, xu >= x, yl <= y, yu >= y)]
out
# station grid
# 1: A b
# 2: B <NA>
# 3: C f