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

时间:2017-05-17 03:05:31

标签: r data.table seq

我有一个像这样的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的新var,如下所示:

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的使用名称,但我不知道如何解决它。我该怎么办?

1 个答案:

答案 0 :(得分:2)

根据OP的例子,'count'对于每个'id','cant'组都是unique,因此在按'id'和'cant'分组后,指定'year'的逻辑条件iif'count'的第一个值小于12,得到OP帖子中显示的序列或else返回行序列,赋值({{1}输出到'池'

:=