我有一些data.table:
dt <- data.table(smth = 1:6, type = rep(c("cat", "dog"), each = 3))
dt
smth type
1: 1 cat
2: 2 cat
3: 3 cat
4: 4 dog
5: 5 dog
6: 6 dog
我想对它进行一些转换:
dt[, smth := c(smth[1:2], max(smth[1:2])), type]
dt
smth type
1: 1 cat
2: 2 cat
3: 2 cat
4: 4 dog
5: 5 dog
6: 5 dog
# Could also do this
dt[1:nrow(dt) %% 3 == 0, smth := dt[, max(smth[1:2]), type]$V1]
如果我能做一些像这样的内容,那就更简洁了
dt[, smth[3] := max(smth[1:2]), type] # Results in error
我的问题
我设想的类型赋值是可能的吗?如果不行:有没有更好的方法(仍然使用data.table)来完成我所做的事情?
N <- 3 ; dt[, smth := replace(smth, N, max(smth[-N])), by = type]
这样的事情,这对我来说看起来更易读。 - David Arenburg