I have data.table in R :
library(data.table) DT = data.table(x=rep(c("b","a","c"),each=3), y=sample(rnorm(9)), v=1:9)
I just want to calculate the minimum and maximum for column x and add these two new columns to DT . Here is my line for this:
DT[,c("e","d"):= list(min(y),max(y)), with=FALSE, by = x] Error in `[.data.table`(DT, , `:=`(c("e", "d"), list(min(y), max(y))), : 'with' must be TRUE when 'by' or 'keyby' is provided
However, if I write: DT[,c("e","d"):= list(min(y),max(y)), with=FALSE] , I get the following:
xyved 1: a -1.7125000 4 -1.7125 1.30553 2: a 1.0198038 5 -1.7125 1.30553 3: a 1.3055301 6 -1.7125 1.30553 4: b -0.9238759 1 -1.7125 1.30553 5: b 0.3077016 2 -1.7125 1.30553 6: b -1.2580845 3 -1.7125 1.30553 7: c -0.9399120 7 -1.7125 1.30553 8: c -0.1910583 8 -1.7125 1.30553 9: c 0.1239158 9 -1.7125 1.30553
As you can see, this works, but does not complete the task with x . I want to get something similar, but e and d must be computed by each value of the variable x . So my question is: how can I solve this?