不属于同一组的点到该点的最近邻距离

2023-12-12

在我的数据集中,我有点,其位置由下式给出X and Y,按以下方式分组ID。我想计算每个点到其他组中的点的最近邻(NN)距离。换句话说,如果ID一个点是1,代码应该从满足的点搜索 NNDID != 1.

伪 R 代码可能如下所示:

DT[DT, c("nn_dist", "nn_X", "nn_Y") := find_NNN(data.table(i.X, i.Y), .SD[ID != i.ID]), by = .EACHI]

为了实现这一点,我尝试编写带有循环等的命令式代码,但速度太慢。我尝试使用get.knnx函数来自FNN库,但后来我不知道如何获取 NN 距离和 NN 位置。

如何在相对较大(约 10,000 行)的数据集上进行此计算?

这是我正在使用的数据集的一小部分

structure(list(ID = c(1L, 1L, 2L, 2L), X = c(318L, 317L, 1273L, 
1272L), Y = c(1L, 2L, 1L, 2L), t = c(1, 1, 1, 1), uid = c(1L, 
2L, 1271L, 1272L)), row.names = c(NA, -4L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x7f89b481f0e0>)
  • t数据集中所有点的列都是相同的
  • uid是赋予每个点的唯一 ID,无论其位置或组如何,因此max(uid)等于数据集中的#rows

您可以创建一个传递的小距离函数x, y,和一个数据框d所有候选点的(即其他id组中所有点的x和y值,并返回最近的组间点的坐标和uid)

dist <- function(x,y,d) d[order(d[,sqrt((X-x)^2 + (Y-y)^2)])][1]

然后将函数应用到框架上

df[, c("nnX", "nnY", "nn"):=dist(X,Y, df[ID!=.BY$ID,.(X,Y,uid)]),by=.(ID,uid)]

Output:

   ID    X Y t  uid  nnX nnY   nn
1:  1  318 1 1    1 1272   2 1272
2:  1  317 2 1    2 1272   2 1272
3:  2 1273 1 1 1271  318   1    1
4:  2 1272 2 1 1272  318   1    1

如果您还想要到最近邻居的距离,您可以更新函数和对函数的调用,如下所示:

dist <- function(x,y,d) {
  d[, nn_dist:=sqrt((X-x)^2 + (Y-y)^2)][order(nn_dist)][1]
}
df[, c("nnX", "nnY", "nn", "nn_dist"):=dist(X,Y, df[ID!=.BY$ID,.(X,Y,uid)]),by=.(ID,uid)]

Output:

   ID    X Y t  uid  nnX nnY   nn  nn_dist
1:  1  318 1 1    1 1272   2 1272 954.0005
2:  1  317 2 1    2 1272   2 1272 955.0000
3:  2 1273 1 1 1271  318   1    1 955.0000
4:  2 1272 2 1 1272  318   1    1 954.0005

或者,您可以使用第一个函数并使用以下方法估计最后的距离df[, nn_dist := sqrt((X-nnX)^2 + (Y-nnY)^2)]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不属于同一组的点到该点的最近邻距离 的相关文章

  • 将循环转换为并行计算的函数

    我正在使用 R 编程语言 我遇到这个问题 我试图找出两个 shapefile 之间的成对交集 即第一个 shapefile 中的每个多边形与第二个 shapefile 中的所有多边形相交的百分比 我想我找到了解决这个问题的基本方法 Load
  • R 根据事件更新值

    我最近发布了这个问题 该问题已经与我在笔记本电脑上本地使用的 Mysql 数据库相关 由于我在 Mysql 中没有找到问题的解决方案 其他人似乎也没有找到解决方案 所以我想再次发布它 但现在与 R 相关 我使用带有 RMysql 包的数据库
  • 将命名参数列表传递给函数?

    我想编写一个小函数来从适当的分布生成样本 例如 makeSample lt function n dist params values lt makeSample 100 unif list min 0 max 10 values lt m
  • R::bigmemory - 如何创建角色big.matrix?

    我尝试使用bigmemory封装在R我一开始就陷入困境 我愿意 temp lt matrix paste a 1 10 5 2 并得到一个字符矩阵 没关系 但后来我尝试 x lt as big matrix temp type char 我
  • 返回数据帧 R 中的下一行

    我有一个看起来像这样的数据框 kind datetime book 2016 04 23 04 23 00 pen 2016 04 23 04 30 00 toy 2016 04 23 06 45 00 我想为数据集中的每一行返回下一行的日
  • 将年月格式转换为 POSIXct [重复]

    这个问题在这里已经有答案了 我有一些年月形式的数据 我想将其格式化以用于绘图ggplot date lt c 2016 03 2016 04 2016 05 2016 06 2016 07 2016 08 2016 09 2016 10 2
  • 如何在 ggplot 中保持配色方案,同时删除每个图中未使用的级别?

    我想比较一个图中的数据的一些子组和另一图中的一些其他子组 如果我绘制一个图 其中绘制了所有子组 那么这个数字将是巨大的 并且每个单独的比较都会变得困难 我认为如果给定的子组在所有图中都具有相同的颜色 这对读者来说会更有意义 这是我尝试过的两
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re

随机推荐

  • 不使用任何浏览器使用 Selenium

    我一直在尝试使用 Selenium 进行网络自动化 有没有什么方法可以在不实际安装 Chrome 或 Firefox 等浏览器的情况下使用它们 例如使用一些替代选项 或者拥有它们的便携式版本 如果我可以使用便携式版本 我如何告诉 Selen
  • Python2.7 MySQL 连接器在 LOAD DATA LOCAL INFILE 时出错

    我正在尝试使用 Python 和 MySQL Connector 将人口普查数据动态加载到 mysql 数据库 来自 csv 文件 我不明白为什么我会收到错误 Traceback most recent call last File min
  • 如何使用 d3.js 获取父节点的索引

    使用 d3 js 如果我在 比如说 父节点的某个值 x 之后 我会使用 d3 select this parentNode datum x 不过 我想要的是数据 即数据的 索引 建议 Thanks 元素的索引仅在集合中明确定义 当您仅选择单
  • 如何在Apportable中使用CoreData?

    我尝试了完整版本的可移植性 但 CoreData 有问题 我在configuration json中有正确的功能 FEATURES opengles2 landscape prefer external storage write exte
  • 在 React Native 中获取 onPress 按钮的名称

    我有两个按钮 它们都调用相同的 onPress 函数 在回调中 我希望能够区分按下的按钮
  • WCF 服务返回 400 错误请求

    我有这个应用程序可以在本地运行 并且在部署时使用 mdf SQL Express 数据库文件 我通常将其用于测试目的 但是 当我将其更改为与 SQL Server 2008 一起使用时 应用程序可以工作 但服务却不能 例如 如果在页面后面的
  • 警告:imagejpeg() [function:imagejpeg]: gd-jpeg: JPEG 库报告不可恢复的错误

    我的根文件夹中安装了 WordPress 直到昨天它工作正常 但今天它给出了以下错误 我猜生成缩略图图像 Warning imagejpeg function imagejpeg gd jpeg JPEG library reports u
  • 使用 xlsxwriter 将表格从 Word (.docx) 写入 Excel (.xlsx)

    我正在尝试解析表格的单词 docx 然后使用 xlsxwriter 将这些表格复制到 Excel 这是我的代码 from docx api import Document import xlsxwriter document Documen
  • 将大文本插入 blob

    很长一段时间以来 我一直在尝试寻找这个问题的解决方案 但在互联网上却找不到答案 我遇到这种情况 我需要使用 php 从 firebird 数据库插入或更新 blob 字段 子类型 1 问题是 当文本变得非常大 gt 36k 时 它不会执行查
  • Spring 状态机 - 将静态数据附加到状态

    使用 Spring 状态机 我们有状态和事件 我找不到任何关于是否可以在配置期间将静态数据附加到状态的文档 例如 如果有状态 S1 和 S2 public void configure StateMachineStateConfigurer
  • 在 Java 中打印原语数组

    我有两个数组 char chars 1 2 3 int numbers 1 2 3 为什么打电话后System out print chars 我越来越123之后System out print numbers 我有类似的东西 C 9304
  • Heroku 工具带在上次更新后无法运行

    我使用的是 Ubuntu 10 10 Heroku 在上次更新 上次运行 heroku update 后完全停止工作 现在每个命令都会产生 usr local heroku lib heroku updater rb 54 ininject
  • Python 错误“ImportError:没有命名的模块”

    Python 安装在本地目录中 我的目录树如下所示 local directory site packages toolkit interface py 我的代码在这里 local directory site packages toolk
  • C++中的隐藏规则是什么?

    我对名称隐藏和信息隐藏一词感到非常困惑 最重要的是 c 中的隐藏规则是什么 有人可以给我一个定义吗 姓名隐藏当你覆盖一个类时会发生 struct A int x int y void foo void bar struct B A int
  • 如何在 .gitconfig 中使用 ANSI 256 色

    我正在尝试为 git status 设置自定义颜色 如上所述here 虽然使用预定义的颜色名称有效 color status changed yellow normal 使用 ANSI 256 颜色代码不起作用 color status c
  • JPA 中的每个表是否应该有一个存储库?

    JPA 中的每个表是否应该有一个存储库 如果没有 如何解析存储库数据库中的泛型 例如 下面是一个StoreRepository 它处理CRUD上的操作Store目的 如果我想让存储库保存一个StoreEvent对象也是如此 我将如何更改下面
  • Python 中多元正态分布的集成

    我正在尝试在 python 中集成多元分布 为了测试它 我使用二元正态分布构建了这个玩具示例 我用nquad 以便稍后将其扩展到两个以上的变量 这是代码 import numpy as np from scipy import integr
  • 是否可以从 find 命令输出中删除根目录?

    我想移动一些文件 并认为 find 是选择正确文件的好选择 所以我寻找这些文件 find somedir iname somefile somedir subdir1 subdir2 somefile somedir subdir2 som
  • 如何通过API检查用户是否登录了他的google帐户?

    我正在开发一个页面来显示用户可以访问的文档的预览 为了预览 我使用带有 src 的 Iframe 文档 ID 这里的问题是 当用户未登录时 它会显示一个空白的 iframe 如果当前用户未登录 我想将用户重定向到谷歌登录页面 然后显示预览文
  • 不属于同一组的点到该点的最近邻距离

    在我的数据集中 我有点 其位置由下式给出X and Y 按以下方式分组ID 我想计算每个点到其他组中的点的最近邻 NN 距离 换句话说 如果ID一个点是1 代码应该从满足的点搜索 NNDID 1 伪 R 代码可能如下所示 DT DT c n