首页 > 解决方案 > 数据表中的“:”运算符(这与 := 无关,而只是:任何人都可以建议。)

问题描述

使用 ":"运算符我试图j在数据表的参数中添加列。这些是简单的 6 个月和 12 个月 .. 36 个月的聚合

OrderQty36M[,':='(Stat6M=sum(M14:M19)),(Stat12M=sum(M14:M25))]

":"参数可以用作数据表中的序列运算符还是有其他方式?

in [.data.table(OrderQty36M, , :=(Stat6M = sum(M14:M19)), (Stat12M = sum(M14:M25))) :
“by”或“keyby”列表中的项目长度为 (1)。每个必须与 x 中的行或 i (36703) 返回的行数相同。
另外:警告信息:
1:在 M14:M25 中:
数值表达式有 36703 个元素:只使用第一个
2:在 M14:M25 中:
数值表达式有 36703 个元素:只使用第一个

标签: rdatatable

解决方案


您在这里尝试使用 data.table 的方式有一些困惑:

  1. 您对 Stats12M 的计算在 by 列中,我认为这不是有意的。Stats6M 计算中的括号应围绕 Stats12M 计算进行扩展。
  2. 我不认为 data.table 可以选择语法为 M14:M19 的列。幸运的是,dplyr 可以使用 select 功能。
  3. 我认为您打算跨行而不是列求和,因此您想使用 rowSums 而不是求和。

我的代码更正版本如下。

OrderQty36M[,':='(Stat6M=rowSums(select(.SD,M14:M19)), Stat12M=rowSums(select(.SD,M14:M25)))][]

推荐阅读