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

R data.table按组计算子组value与指定参考子组(如plot_4)的比值

实现方案

直接使用data.table的分组语法即可实现需求,无需额外依赖包:

最简写法(直接计算比值,可灵活指定参考子组)

library(data.table)

# 指定参考子组
ref_plot <- "plot_4"

# 按crop分组计算各子组与参考子组的value比值
DT[, ratio_to_ref := value / value[plotnum == ref_plot], by = crop]

同时保留参考值列的写法(符合你最初的思路)

DT[, `:=`(
  # 填充当前组参考子组的value到全组
  ref_value = value[plotnum == ref_plot],
  # 计算比值
  ratio_to_ref = value / ref_value
), by = crop]

增加异常兼容的写法

如果存在部分crop组缺少指定参考子组的情况,可以增加判断避免报错:

DT[, ratio_to_ref := {
  ref_val <- value[plotnum == ref_plot]
  # 仅当组内有且仅有一个参考子组时计算比值,否则返回NA
  if(length(ref_val) == 1) value / ref_val else NA_real_
}, by = crop]

计算结果验证示例

以BellPepper组为例,参考子组plot_4的value为37.65809:

  • plot_1的比值为 71.03528 / 37.65809 ≈ 1.886
  • plot_2的比值为 212.1139 / 37.65809 ≈ 5.633
    和实际运行结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:45:01