在 data.table r 中使用 seq 时出错

Error using seq in data.table r

我有一个 data.table 这样的:

DT <- data.table(year = rep(2009,24), id = rep(123,24), cant = c(rep(29,4),rep(30,12),rep(31,8)),
             monthr = c(seq(1,4,1),seq(1,12,1),seq(1,8,1)), count = c(rep(4,4),rep(12,12),rep(8,8)))

我想使用 seq 计算一个名为 pond 的新变量,如下所示:

DT[ , pond := ifelse(test = count < 12 && year == 2009,
                             yes = seq(12 - count + 1, 12, 1),
                             no = seq_along(cant)),by = c("id","cant")]

但我收到以下错误:

#Error in seq.default(12 - count + 1, 12, 1) : 'from' must be of length 1

我猜是因为seq中vars的使用名错误,但不知如何解决。我能做什么?

根据 OP 的示例,'count' 是每个 'id'、'cant' 组的 unique,因此在按 'id' 和 [=20 分组后=],指定i中'year'的逻辑条件,if第一个'count'的值小于12,得到OP的[=26]中的序列=] 或 else return 行序列,将输出分配 (:=) 到 'pond'

DT[year == 2009, pond := if(count[1] < 12) as.integer(seq(12-count[1] +1, 12, 1))
                    else seq_len(.N), .(id, cant)]