You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R data.table如何统计落在每行min_val与max_val区间内的value行数

你原来的代码没有逐行读取当前行的上下限,而是直接对整列的min_val、max_val做向量比较,逻辑不符合需求,因此结果错误。

实现代码

首先构造示例数据:

library(data.table)
dt <- data.table(
  value = c(94.001, 94.002, 94.003, 95),
  min_val = c(94.00, 94.00, 94.01, 94.98),
  max_val = c(94.02, 94.03, 94.04, 95.02)
)

方法1:逐行计算(适合小数据量,写法简单)

按每一行分组统计符合条件的记录数:

dt[, count := sum(dt$value > min_val & dt$value < max_val), by = .I]

方法2:非等连接实现(适合大数据量,性能更高)

利用data.table的非等连接特性,避免逐行遍历,处理万行以上数据时效率提升明显:

dt[, count := dt[dt, on = .(value > min_val, value < max_val), .N, by = .EACHI]$N]

运行后得到的dt结果和你给出的示例完全一致:

value min_val max_val count
1: 94.001   94.00   94.02     1
2: 94.002   94.00   94.03     2
3: 94.003   94.01   94.04     2
4: 95.000   94.98   95.02     1

内容的提问来源于stack exchange,提问作者iuliux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:39:03