我有一个(希望)直截了当的任务我需要完成,但到目前为止,我还没有能够在任何现有的线程中找到我的答案。
假设我有一组坐标,对应于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
(依此类推)
我希望创建一个表格,告诉我每个“站点”(A,B,C)属于哪个网格单元格(a,b,c)。
在R中有(相对)简单的方法吗?
答案 0 :(得分:0)
复制有问题的数据。如果这些已作为data.frames存在,则您需要运行以下代码才能使我的代码正常工作:setDT(df)
setDT(stations)
(将它们转换为data.table类)
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
")
创建一个包含每个网格边界的数据表
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