我有一个像这样的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的使用名称,但我不知道如何解决它。我该怎么办?
答案 0 :(得分:2)
根据OP的例子,'count'对于每个'id','cant'组都是unique
,因此在按'id'和'cant'分组后,指定'year'的逻辑条件i
,if
'count'的第一个值小于12,得到OP帖子中显示的序列或else
返回行序列,赋值({{1}输出到'池'
:=