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

如何统计data.table中指定列的每行频率?附示例数据

统计data.table中指定列的每行频率

看起来你需要计算data.table里每行counts列的频率占比(也就是每行数值在整列总和中的比例),用data.table的原生语法可以高效完成这个需求,下面是具体实现方法:

方法1:原地新增频率列(推荐,data.table高效操作)

直接在原数据表中新增一列frequency,存储每行的频率值:

# 直接计算并新增列
dat[, frequency := counts / sum(counts)]

这样操作后,原dat表会多出一列frequency,每行的值就是对应counts在整个列中的占比。如果需要控制小数位数让结果更易读,可以用round()函数:

# 保留4位小数的频率计算
dat[, frequency := round(counts / sum(counts), 4)]

方法2:创建新表不修改原数据

如果不想改动原始数据表,可以生成一个包含频率列的新表:

# 创建包含频率列的新data.table
dat_with_freq <- dat[, .(kmers, counts, frequency = counts / sum(counts))]

验证说明

拿你的数据举个例子:所有counts的总和为16361 + 10090 + 9599 + 9021 + 8516 + 8325 + 5739 + 5642 + 5378 + 5326 = 83997,第一行的频率就是16361 / 83997 ≈ 0.1948,上面的代码会自动完成这类计算并填充到对应行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:14:28