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

R语言按条件为data.table填充浓度向量的实现方法

data.table按规则批量填充固定浓度序列方案

前置准备

加载依赖包,定义预设浓度序列:

library(data.table)
concentrations <- c(0.0001, 0.001, 0.01, 0.1, 1, 10)

实现逻辑

  • 以药物列为分组键,给每组内的记录按原始顺序生成行序号
  • 仅对same字段值为no的记录执行填充操作:
    • 行序号不超过浓度序列长度时,取序列对应位置的浓度值赋值
    • 行序号超出浓度序列长度时,赋值为NA
  • same字段值不为no的记录保留原始浓度值,不做修改

核心实现代码

# 按药物分组生成组内行号
dt[, row_num := seq_len(.N), by = drug]

# 按规则填充浓度列
dt[
  same == "no",
  concentration := fifelse(
    row_num <= length(concentrations),
    concentrations[row_num],
    NA_real_
  )
]

# 删除临时生成的辅助列
dt[, row_num := NULL]

效果匹配说明

  • 若某药物对应记录数刚好等于浓度序列长度(6条),会按顺序完整填充全部预设浓度值
  • 若某药物对应记录数少于6条,按实际记录数取浓度序列前N个值顺序填充
  • 若某药物对应记录数超过6条,前6条按顺序填充预设浓度,第7条及之后的记录浓度填充为NA
  • 所有same != "no"的记录不会被改动,保留原始浓度取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:39:23