计算每个组的 data.table 窗口中的值数量

2024-01-13

我正在尝试添加新列data.table,其中行中的值取决于行中值的相对关系。更准确地说,如果一行中有一个值 X,我想知道同一列(和组)中有多少个其他值在 X-30 范围内。

也就是说,考虑到:

DT<-data.table(
X = c(1, 2, 2, 1, 1, 2,  1, 2, 2, 1, 1, 1),
Y = c(100, 101, 133, 134, 150, 156,  190, 200, 201, 230, 233, 234),
Z = c(1, 2, 3, 4, 5, 6,  7, 8, 9, 10, 11, 12))

我想要一个新的列,其值:

N <- c(0, 0, 0, 0, 1, 1,  0, 0, 1, 0, 1, 2)

我尝试了以下方法,但没有得到可以使用的结果:

DT[,list(Y,num=cumsum(Y[-.I]>DT[.I,Y]-30),Z),by=.(X)]

有什么想法如何做到这一点?


这可能可以通过滚动连接(?)来实现,但这里有一个foverlaps目前的替代方案

DT[, `:=`(indx = .I, Y2 = Y - 30L, N = 0L)] # Add row index and a -30 interval
setkey(DT, X, Y2, Y) # Sort by X and the intervals (for fovelaps)
res <- foverlaps(DT, DT)[Y2 > i.Y2, .N, keyby = indx] # Run foverlaps and check what can we catch
setorder(DT, indx) # go back to the original order
DT[res$indx, N := res$N][, c("indx", "Y2") := NULL] # update results and remove cols
DT
#     X   Y  Z N
#  1: 1 100  1 0
#  2: 2 101  2 0
#  3: 2 133  3 0
#  4: 1 134  4 0
#  5: 1 150  5 1
#  6: 2 156  6 1
#  7: 1 190  7 0
#  8: 2 200  8 0
#  9: 2 201  9 1
# 10: 1 230 10 0
# 11: 1 233 11 1
# 12: 1 234 12 2

或者,使用which=TRUE的选项foverlaps使重叠合并更小:

# as above
DT[, `:=`(indx = .I, Y2 = Y - 30L, N = 0L)]
setkey(DT, X, Y2, Y)

# using which=TRUE:
res <- foverlaps(DT, DT, which=TRUE)[xid > yid, .N, by=xid]
DT[res$xid, N := res$N]
setorder(DT, indx)
DT[, c("Y2","indx") := NULL]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算每个组的 data.table 窗口中的值数量 的相关文章

  • R闪亮的html小部件之间的交互

    我正在开发一个 R 闪亮应用程序 它使用多个 html 小部件 特别是网络D3 d3热图 and 和弦诊断 这些小部件单独工作正常 但是 在同一页面中使用它们会留下一个空格处他们应该在哪里 这是显示错误的可重现代码 在 UI 中注释绘图线
  • r : 直方图上的 ECDF

    在 R 中 与ecdf我可以绘制经验累积分布函数 plot ecdf mydata 与hist我可以绘制数据的直方图 hist mydata 如何在同一图中绘制直方图和 ecdf EDIT 我尝试做类似的东西 https mathemati
  • 闪亮的演示文稿 (ioslides):自定义 CSS 和徽标

    我安装了以下内容 RStudio 预览版 版本 0 98 864 2014 年 5 月 24 日 knitr 和shiny 的开发版本 来自 devtools install github c yihui knitr rstudio shi
  • R:变换不规则时间字符串

    我有两个不同的时间序列 来自不同的数据帧 具有不同的不规则格式 但问题是相同的 我只想提取小时 分钟 秒和毫秒 时代系列看起来像这样 ts1 08 27 23 445 08 27 24 280 08 27 25 115 I tried st
  • 单击并按住 R 中的按钮闪亮?

    我希望能够通过单击 R 闪亮按钮来更改参数的值 所以我需要按钮 一个用于增加值 一个用于减少值 我想在按住按钮的同时保持值以一定的速度减少 增加 通过释放按钮的点击 动作应该停止 到目前为止我还没有找到这个选项actionButtons在
  • profvis() 何时以及为何显示“源不可用”?

    我经常分析 R 代码 并大量使用 profvis 对于某些函数 浏览器窗口的上半部分会显示源代码 有时则不会 我不知道什么时候会出现这种情况 对我来说这似乎是随机的 有谁知道 profvis 何时以及为什么无法在顶部窗口中显示代码 发生这种
  • 在 Shiny 中使用 readlines(prompt = )

    我有一个代码 使用以下方式获取输入readlines prompt 功能 您能告诉我 Shiny 中的哪个输入函数足以将此代码适应 Shiny 应用程序吗 我需要一个交互功能 我无法使用简单的输入selectInput 因为我有很多read
  • Quarto/Rmarkdown 中的美人鱼图:狭窄且模糊

    我正在尝试生成 pdf 格式的四开文档 稍后会生成 word 格式 我遇到了美人鱼图的问题 请在下面找到一个示例 qmd 文件来说明该问题 所以首先它应该支持 mermaid 标签 但当我这样做时 我无法在 rstudio 中 运行 单元
  • 包检查时如何有效处理未压缩的保存?

    在最近开发一个包的过程中 我将数据集包含在data 我的包的文件夹 在我的具体情况下 我有 5 个数据集 所有这些数据集都位于data table格式 尽管我在下面描述的问题仍然存在 如果我将它们保留为data frame 我已将每个人单独
  • Dplyr 多重滞后整齐评估?

    我试图在 dplyr 中使用尽可能少的代码来实现多个滞后 同时坚持整洁的评估 以下标准评估 SE 代码有效 if require dplyr install packages dplyr library dplyr a as tibble
  • 将文本添加到 ggplot 中的轴标签

    我从下表中绘制了一个图表 BoatPhs fit se lower upper 1 Before 3 685875 0 3287521 3 038621 4 333130 2 After0 20NTA 3 317189 0 6254079
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 如何使用r中的dplyr在特定位置插入空白行

    我想在数据框中的特定位置插入空白行 我的数据框是这样的 dat lt data frame group c rep A 1 rep B 4 rep C 2 rep D 2 group 1 A 2 B 3 B 4 B 5 B 6 C 7 C
  • 根据共同值对两个数据帧求和

    我有一个看起来像的数据框 day of week count 1 0 3 2 3 1 3 4 1 4 5 1 5 6 3 另一个喜欢 day of week count 1 0 17 2 1 6 3 2 1 4 3 1 5 4 5 6 5
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 如何将 mcmc.list 转换为 bugs 对象?

    我正在使用rjagsR 库 功能coda samples产生一个mcmc list 例如 来自example coda samples library rjags data LINE LINE recompile LINE out lt c
  • 如何制作一连串的ggplots并在它们之间绘制箭头?

    对于一个项目 我需要绘制一些图并在它们之间放置箭头作为序列的指示 我想知道我是否可以用 ggplot 来做到这一点 是否可以使用 ggplot2 绘制一个干净的大箭头并将其添加到最终的多重图中 作为示例 我使用此代码来绘制绘图 librar
  • 绘制带有颜色渐变的geom_segment线? (或者还有另一种方法来强调开始与结束吗?)

    我的数据框中有大量行 100 000 的两组纬度和经度变量 我正在尝试绘制一个连接这两组坐标的图 即 从纬度1 经度1 to 纬度2 经度2 使用 geom segment 使用非常低的 alpha 使线条透明 因为线条太多 我想强调这些线
  • 在 R 中收集多组列[重复]

    这个问题在这里已经有答案了 我有一个宽数据框 需要将其收集或融化成一个高数据框 我遇到的问题是我有几组列需要保持关联 分组 我每个表单提交有 2 个用户 每个用户有 3 列数据 我想将这 6 列基本上以 3 组的形式堆叠起来 以便每个用户都
  • R 在安装包依赖项时不考虑最大版本

    假设我正在开发一个名为magicr做一些统计魔术 我希望它使用另一个名为的包中的函数fairydust 假设 存在于 CRAN 上 很遗憾fairydust刚刚向 CRAN 发布了 2 0 0 版本 完全破坏了我计划使用的功能 所以我更新了

随机推荐

  • GridLayoutManager 自定义

    i want to know if there is way that i can customize gridlayoutmanager in android to have horizontal layout like this ske
  • Jquery UI 对话框追加到 Div

    我正在使用下面的代码创建一个 Jquery UI 对话框 var dynDiv document createElement div document getElementById divparent appendChild dynDiv
  • 传递不同类型的可变数量的参数 - C++

    我正在使用 C 进行编码 并且有一些关于省略号的问题 是否可以将类或类指针传递到省略号中 基本上我想做的是以以下类型传递可变数量的参数char and class 我目前正在使用省略号 并试图找出如何通过课堂 如果省略号在这里不适用 有哪些
  • 跨不同域和不同应用程序共享 cookie(经典 ASP 和 ASP.NET)

    有没有办法跨不同域和不同应用程序 经典 ASP 和 ASP NET 共享 cookie 不 没有 问题是跨域问题 而不是 asp net classic asp 并且是安全原因 如果域是子域 您可以共享 cookie 前提是您使用双方都可以
  • VSCode 中 jupyter 笔记本中的交互式 python 3d 绘图

    When I use jupyter notebook in Chrome I had the opportunity to show interactive 3d plots like this 现在我想在 VSCode 中看到相同的结果
  • 如何使用 keycloak 和 spring 读取所有用户?

    我在用着keycloak 3 4 and spring boot开发一个网络应用程序 我使用 Active Directory 作为用户联合来检索所有用户信息 但要在我的网络应用程序中使用这些信息 我想我必须将它们保存在 local web
  • 多级页表——分层分页

    过去操作系统期末考试的示例问题 我如何计算此类问题 计算机有 64 位虚拟地址空间和 2048 字节页面 一个页表项占用 4 个字节 使用多级页表是因为每个表必须包含在一个页内 需要多少级 我该如何计算这个 由于页表必须适合一个页面 因此页
  • 更改分割线突出显示/调整线条大小

    我注意到 当我在 Visual Studio 中调整元素大小时 分割线会被涂成纯透明的黑色 如下所示 然而 在我自己的 Winforms 应用程序中 我得到了以下调整大小行 我想知道如何改变这条调整线的绘画 如果你看一下分离器源代码 htt
  • Firebase 身份验证 FirebaseNetworkException:发生网络错误(例如超时、连接中断或无法访问主机)

    我正在为我的 Android 应用程序创建身份验证工作流程 我允许用户使用用户名 密码和各种 OAuth 提供商登录 我正在验证电子邮件和密码 以便我知道传递给 Firebase 的信息是有效的 我在用着com google firebas
  • 获取 boto.cfg 中的 Python 凭据文件

    我是第一次使用 AWS 刚刚安装了 python 的 boto 我陷入了它建议的步骤 您可以将此文件放置在 etc boto cfg 中供系统范围使用 也可以放置在执行命令的用户的主目录中 boto 老实说 我不知道该怎么办 首先 我找不到
  • 使用 newID() 创建函数

    我不断收到此错误 有什么想法吗 在函数内的 newid 中无效使用副作用或时间相关运算符 我正在与MS SQL Server 2005 这里是T SQL陈述 Create Function dbo GetNewNumber RETURNS
  • 触发多事件

    我可以在trigger 中触发多个事件或在JQuery 中链接它们吗 例如 element trigger event1 event2 event3 or element trigger event1 trigger event2 or e
  • =~ 在 Perl 中做什么?

    我猜标签是一个变量 它正在检查9eaf 但这在 Perl 中存在吗 这里的 符号是做什么的 前后的 字符是什么9eaf doing if tag 9eaf Do something 是测试正则表达式匹配的运算符 表达方式 9eaf 是一个正
  • 什么都没有,WithEvents 字段和内存泄漏

    是否需要设置为Nothing 在 Dispose 中 所有WithEvents fields 显然Handles关键字将处理程序添加到此类字段 但不会将其删除 直到该字段不再存在为止 Nothing 这会产生内存泄漏 这对于像这样的情况应该
  • fork() 后处理子进程中 std::thread 终止的正确方法

    你想皱多少皱眉就皱多少 无论如何我都会这么做 我的问题是 在下面的代码中 处理终止的正确方法是什么std thread在生成的子进程中fork std thread detach or std thread join include
  • 如何在 Rails 1.2.3 中使复选框默认为“选中”?

    如何使复选框在最初显示时默认为 选中 我还没有找到一种 Rails 方法来做到这一点 有效 所以我用 JavaScript 做到了 Rails 有没有正确的方法来做到这一点 我正在使用 Rails 1 2 3 导轨 3 x form for
  • 在 Android 上刷新地图活动中的覆盖对象

    我必须构建一个地图活动 最重要的是 我需要显示一些位置点 这些位置是从另一个类的哈希表中检索的 该哈希表的内容始终会发生变化 因此 我希望看到地图活动上的这些位置点随着哈希表的修改而移动 代码如下所示 Override public voi
  • 动态数据表到实体*无需*提前进行硬编码...?

    问题 问 为什么不能 如何动态使用 DataTable 中的数据在使用反射 的函数中创建 LINQ EF 以根据可用内容创建实体实例 我看到了很多很多的问题和关于硬编码 但没有人这样做动态地 我正在寻找一种替代方法 不必为我的所有实体维护硬
  • Angular 2+:IE11 严格模式下不允许对属性进行多重定义

    我安装了 pollyfills 但在 main bundle js 中的 Internet Explorer 11 中收到此错误 它位于第 9692 行 但是查看编译后的代码 我无法理解它 这里是 styles nng select cus
  • 计算每个组的 data.table 窗口中的值数量

    我正在尝试添加新列data table 其中行中的值取决于行中值的相对关系 更准确地说 如果一行中有一个值 X 我想知道同一列 和组 中有多少个其他值在 X 30 范围内 也就是说 考虑到 DT lt data table X c 1 2